スプレッドシート+GASでGoogleカレンダーに予定を一括登録する

GoogleスプレッドシートのデータからGoogleカレンダーに一括登録するスクリプト(Google Apps Script)を作ってみました。

完成品

入力シート(シート名:create)に、スケジュールのデータを入力

カレンダーに登録するデータを入力するシート
色々なパターンのスケジュールを入力してみた(下3行は、わざと不正なデータを入力してみた)

スクリプトを実行すると、H列に処理結果が追記される

処理実行後のスプレッドシート
下3行は、わざと不正なデータを入力したため、失敗となっている

Googleカレンダーに予定が登録される

処理実行後のカレンダー

招待メール列に”Y”を入力したスケジュールについては、招待メールも送信される。(空白でなければ”Y”じゃなくてもOK)

招待メールも送信できる

スクリプト

スプレッドシートのツール > スクリプトエディタよりスクリプトエディタを起動し、コード.gsに下記のスクリプトを貼り付けます。

// カレンダー・スプレッドシートの取得
const calendar = CalendarApp.getCalendarById("xxxxxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com");
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("create");

function createEventsFromSheet(){
  // スプレッドシートのデータ取得
  const records = sheet.getDataRange().getValues();
  records.shift();

  // 処理結果配列
  const results = [];

  // イベント一括作成
  for ( record of records ){

    // 任意項目の設定
    const options = {};
    if ( record[3] ){ options.description = record[3]; } // 説明
    if ( record[4] ){ options.location = record[4]; }    // 場所
    if ( record[5] ){ options.guests = record[5]; }      // ゲスト
    if ( record[6] ){ options.sendInvites = true; }      // 招待メール

    // イベント作成
    try {
      const event = calendar.createEvent(
        record[0],  // タイトル
        record[1],  // 開始日時
        record[2],  // 終了日時
        options
      );
      results.push([`成功:Event ID=${event.getId()}`]);
    } catch(e) {
      results.push([`失敗:${e}`]);
    }
  }

  // 処理結果貼り付け
  sheet.getRange(2,8,results.length,1).setValues(results);

}

*コード冒頭の”xxxxxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com”部分には、イベントを登録したいカレンダーのIDを入力してください。(Googleカレンダーの「設定と共有」画面の「カレンダーの統合」部分にあるカレンダーIDです)

その後、スクリプトエディタの▷実行で実行します。

(もしくは、スプレッドシート上に図形描画でボタンを配置して、スクリプトを割り当てcreateEventsFromSheetを割り当ててください)

コメント

タイトルとURLをコピーしました