LoginSignup
5
6

More than 5 years have passed since last update.

GASを使ってスプレッドシートからGoogleカレンダーにスケジュール登録する

Posted at

概要

GoogleAppsScriptを使用するとExcelのマクロのように自動処理を設定できます。
今回はGoogleAppsScriptを利用してスプレッドシートの予定一覧から自動でGoogleカレンダーにスケジュール登録を行う方法を記載します。

スケジュール登録用のコードの全体像

■設定

今回は例としてサッカーの試合日程をスプレッドシートで一覧作成し、それをGoogleカレンダーへスケジュール登録するという設定でコードを作成します。

まず、日程一覧表を下図のような感じで作成します。
image.png

上記で作成した日程表に合わせて、以下のようにコードを書きます。

■サンプルコード
code.gs
//■スケジュールのカレンダー登録
function CreateSchedule() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var slist = ss.getSheetByName('柏レイソル試合日程');
  var lastrow = slist.getLastRow();

  //予定の一覧部分・カレンダー名・カレンダーIDを取得
  var contents = slist.getRange(4, 1, lastrow, 6).getValues();
  var cnlist = '柏レイソル試合日程';
  var cidlist = 'ここにGoogleカレンダーIDを指定';

  //順に予定を作成
  for (i = 0; i <= lastrow - 4; i++) {

    //登録フラグが「〇」になっていたら登録しない
    if (contents[i][3] == '') {
      continue;
    }

    //必須項目が入力されていない場合、スキップ
    if (contents[i][1] == '') {
      continue;
    }
    if (contents[i][2] == '') {
      continue;
    }
    if (contents[i][4] == '') {
      continue;
    }
    if (contents[i][5] == '') {
      continue;
    }

    //選択されたカレンダーのIDを取得
    var calendar = cidlist;

    //予定のコンテンツを取得
    var title = contents[i][4];
    var startTime = contents[i][1];
    var endTime = contents[i][2];
    var location = contents[i][5];

    //予定を作成
    CalendarApp.getCalendarById(calendar).createEvent(
      title,
      startTime,
      endTime,
      {
        location: location
      }
    );

    //予定が作成されたら登録フラグを「〇」にする
    slist.getRange(i + 4, 4).setValue('');
  }
}

中身の解説

まず、以下でスプレッドシートの中のどのシートか、一覧がシートの中のどの部分なのか、登録先のカレンダーは何なのかを設定します。

code.gs
  //開いているスプレッドシートの中のどのシートなのか、どの行までなのかを指定
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var slist = ss.getSheetByName('柏レイソル試合日程');
  var lastrow = slist.getLastRow();

  //予定の一覧部分・カレンダー名・カレンダーIDを取得
  var contents = slist.getRange(4, 1, lastrow, 6).getValues();
  var cnlist = 'テスト用';
  var cidlist = 'ここにGoogleカレンダーIDを指定';

必要情報の設定が完了したら、繰り返し文で登録する予定を作成していきます。
登録フラグや必須項目については必要に応じて作成していただければと思います。

最後に以下の通り、タイトル、開始日時/終了日時、場所を指定を定義し、.createEventの中に指定することでスケジュール情報をGoogleカレンダーに登録します。

code.gs
    //選択されたカレンダーのIDを取得
    var calendar = cidlist;

    //予定のコンテンツを取得
    var title = contents[i][4];
    var startTime = contents[i][1];
    var endTime = contents[i][2];
    var location = contents[i][5];

    //予定を作成
    CalendarApp.getCalendarById(calendar).createEvent(
      title,
      startTime,
      endTime,
      {
        location: location
      }
    );

コードを実行することで下図にように指定したカレンダーに予定を登録することができました。
image.png

大量の予定を登録する際に、一つ一つ手で登録していくのは面倒だと思いますので、ぜひGASでコードを組んでスケジュール登録してみてはいかがでしょうか。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6