【Google】スプレッドシートからカレンダーにGASで自動的にイベントを組み込む方法

Google Apps Script (GAS) を使用して Googleスプレッドシートのデータを基に Google カレンダーにイベントを追加する一連の手順を紹介します。あらかじめスプレッドシートにはイベントのタイトル、開始日時、終了日時がリストされているとします。

ステップ 1: スプレッドシートの準備

  1. Google スプレッドシートを開き、3列(タイトル、開始日時、終了日時)を用意します。
  2. 各行にイベントのデータを入力します。
google spread sheetのgoogle カレンダー用の設定

ステップ 2: Google Apps Script の作成

  1. スプレッドシートのメニューから「拡張機能」>「Apps Script」を選択します。
  2. 下記のスクリプトをコピーして Apps Script のエディタに貼り付けます。

このプロセスの詳細は、こちらのページを確認してください。

// 関数 `addEventsToCalendar` の定義を開始
function addEventsToCalendar() {
  // 現在アクティブなスプレッドシートを取得し、そのアクティブなシートを変数 `sheet` に格納
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // シート内のすべてのデータ範囲を取得し、その値(2次元配列)を `rows` に格納
  var rows = sheet.getDataRange().getValues();
  // デフォルトのカレンダーを取得し、変数 `calendar` に格納
  var calendar = CalendarApp.getDefaultCalendar();

  // ループを開始。1行目はヘッダー行として扱うため、2行目から処理を開始(i = 1)
  for (var i = 1; i < rows.length; i++) {
    // 現在の行のデータを `row` に格納
    var row = rows[i];
    // 行の最初の要素(0番目の列)をイベントのタイトルとして取得
    var title = row[0];
    // 行の2番目の要素(1番目の列)を開始日時として取得し、Date オブジェクトに変換
    var startTime = new Date(row[1]);
    // 行の3番目の要素(2番目の列)を終了日時として取得し、Date オブジェクトに変換
    var endTime = new Date(row[2]);
    // 取得したタイトル、開始日時、終了日時を使用して、カレンダーに新しいイベントを作成
    calendar.createEvent(title, startTime, endTime);
  }
}
google spread sheetとgoogle apps scriptの連携

ステップ 3: スクリプトの実行

  1. Apps Script のエディタで「実行」ボタンをクリックし、addEventsToCalendar 関数を選択します。
  2. 初めてスクリプトを実行する場合は、Google による認証が必要になります。画面の指示に従って認証を完了させてください。

このスクリプトを実行すると、次のようにGoogleカレンダーに、スプレッドシートに書いた予定が反映されます。

google カレンダー

主な Google カレンダー操作関数

以下に列挙するGoogleカレンダーの操作関数を使えば、さらに高度なプログラムを作ることができるので、参考までに。

  1. イベントの追加
    • createEvent(title, startTime, endTime, options)
      • イベントをカレンダーに追加します。
      • title はイベントのタイトル、startTimeendTimeDate オブジェクトで、イベントの開始と終了時刻を指定します。
      • options は任意のパラメータを含むオブジェクトで、場所や説明などを設定できます。
  2. イベントの検索
    • getEvents(startTime, endTime)
      • 指定した期間内のイベントを取得します。
      • startTimeendTimeDate オブジェクトで、検索する期間の開始と終了時刻を指定します。
  3. イベントの更新
    • GAS は直接「イベントを更新する」関数を提供していませんが、getEvents で取得したイベントオブジェクトを通じて、setTitlesetTimesetDescription などのメソッドを使用してイベントの詳細を更新できます。
  4. イベントの削除
    • イベントオブジェクトには deleteEvent メソッドがあり、これを使用してイベントを削除できます。
上部へスクロール