CSV 形式のイベント一覧情報を Google カレンダーに一括登録する 2 つの方法 #GoogleAppsScript


はじめに

Google カレンダーでイベントを一括登録する方法を 2 つ紹介します。

  1. CSV をカレンダーにインポートする方法
  2. Google Apps Script を用いてスプレッドシートから登録する方法

1 と 2 の方法によって、登録できる情報が異なります。 1 の方法で済むなら、 1 でやった方が手続きが楽だと思います。参加者を登録する必要があれば、 2 の方法を選択する必要があります。

以下に詳細な手順を記載します。

1. CSV をカレンダーにインポートする方法

公式ヘルプ を参考に、 CSV ファイルを作成。

  • Subject
    • 予定の名前(必須)
  • Start Date
    • 予定の開始日(必須)
  • Start Time
    • 予定の開始時刻
  • End Date
    • 予定の終了日
  • End Time
    • 予定の終了時刻
  • All Day Event
    • 終日の予定であるかどうかを指定します。終日の予定の場合は「True」、そうでない場合は「False」と入力します
  • Description
    • 予定の説明やメモ
  • Location
    • 予定の場所
  • Private
    • 予定を限定公開にするかどうかを指定します。限定公開の場合は「True」、限定公開でない場合は「False」と入力します


https://calendar.google.com/ にアクセスして、 + ボタンを選択。


メニューから インポート を選択。


パソコンからファイルを選択 をクリックし、上記のフォーマットに従ったファイルを選択。

2. Google Apps Script を用いてスプレッドシートから登録する方法

以下のサンプルのスプレッドシートをもとに、イベント一覧を作成。コピーを自分のアカウントにコピーしてきていじってください。
https://docs.google.com/spreadsheets/d/1yoiwKPBs-FwGYq-zZkQza2B7VYpvvqcM0tCLDSyFiR8/edit#gid=0


https://script.google.com/ にアクセスして、新規スクリプトを選択。


https://github.com/tanabee/spreadsheet-to-calendar/blob/be1c6e755bbc2aa05fc739252bb1e76c1b9cfb90/main.js のスクリプトを Google Apps Script のエディタに貼り付け。

以下全文。

// 設定
function getConfig() {
  return {
    spreadSheetId: '',// スプレッドシートの ID を入力。
    spreadSheetTabName: ''// スプレッドシートのタブ名を入力。
  }
}

// カレンダーにイベントを登録
function registerAll() {
  var config      = getConfig();
  var spreadSheet = SpreadsheetApp.openById(config.spreadSheetId);
  var sheet       = spreadSheet.getSheetByName(config.spreadSheetTabName);
  var eventIds = sheet
    .getDataRange()
    .getValues()
    .filter(function (e, i) {
      return i !== 0 && e[6] === '';
    }).map(function (e) {
      var calendarEvent = CalendarApp.getDefaultCalendar().createEvent(
        e[0], e[1], e[2],
        {
          description: e[3],
          location: e[4],
          guests: e[5]
        });
      return [calendarEvent.getId()];
    });

  if (eventIds.length === 0) return;

  sheet.getRange('G2:G' + (eventIds.length+1) ).setValues(eventIds);
}

// 登録されたイベントをキャンセルして、シートから削除
function cancelAll() {
  var range       = 'G2:G1000';
  var config      = getConfig();
  var spreadSheet = SpreadsheetApp.openById(config.spreadSheetId);
  var sheet       = spreadSheet.getSheetByName(config.spreadSheetTabName);
  sheet
    .getRange(range)
    .getValues()
    .filter(function (eventId) {
      return eventId[0] !== '';
    }).forEach(function (id) {
      CalendarApp.getDefaultCalendar().getEventById(id).deleteEvent();
    });
  sheet.getRange(range).clear();
}

spreadSheetId にスプレッドシートの ID を入力。
spreadSheetTabName にスプレッドシートのタブ名を入力。


関数を選択 > registerAll を選択して ▶ ボタンをクリック。(取り消したいときは cancelAll を選択して実行)


これが


こう登録されます。

GAS だと 50 行くらいでサクッとできて良いですね。以上。

関連記事