Edited at

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」と入力します



スクリーンショット 2018-08-22 20.01.37.png

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

スクリーンショット 2018-08-22 20.01.46.png

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

スクリーンショット 2018-08-22 20.02.12.png

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


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

以下のサンプルのスプレッドシートをもとに、イベント一覧を作成。コピーを自分のアカウントにコピーしてきていじってください。

https://docs.google.com/spreadsheets/d/1yoiwKPBs-FwGYq-zZkQza2B7VYpvvqcM0tCLDSyFiR8/edit#gid=0

スクリーンショット 2018-08-22 20.25.48.png

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

スクリーンショット 2018-08-22 20.28.16.png

https://github.com/tanabee/spreadsheet-to-calendar/blob/master/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 にスプレッドシートのタブ名を入力。

スクリーンショット 2018-08-22 20.32.02.png

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

スクリーンショット 2018-08-22 20.38.14.png

これが

スクリーンショット 2018-08-22 20.37.59.png

こう登録されます。

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


関連記事