trigger となる event source を From Calendar にしたときの引数
(言語設定を変えるの面倒なので、 event source とか From Calendar の日本語名が分かる人教えてください)
例として、実行される function を
function doFromCalendarUpdated(args) {
}
のようにしてみる。
trigger の設定画面で、こうやって
-
Choose which function to run
: (前述の)doFromCalendarUpdated
-
Select event source
:From calendar
- (ちなみに
Calendar owner email
には、 calendar id を入れればよい。)

このとき args には、
{"calendarId": "xxxx", "authMode": "FULL", "triggerUid": "xxxx"}
が入っている。 CalendarId は分かるが、なんの変更があったかは分からないっぽい。
Permission
Script が所属するプロジェクト1が Calendar のデータにアクセスすることを許可しないといけない。
設定していない場合、
The script does not have permission to perform that action.
Required permissions: (https://www.googleapis.com/auth/calendar || https://www.googleapis.com/auth/calendar.readonly || https://www.google.com/calendar/feeds)
というエラーが出る。 Trigger で実行する前にテストで実行したりして許可しないといけない
カレンダーのイベントを検索
過去24時間のイベントを検索するコード例
function doFromCalendarUpdated(args) {
if (!args || !args.calendarId) {
Logger.log("No arguments");
return;
}
handleCalendar(args.calendarId);
}
var handleCalendar = function(calendarId) {
var calendar = CalendarApp.getCalendarById(calendarId);
var endTime = new Date();
var startTime = new Date(endTime.getTime() - 24 * 60 * 60 * 1000);
var events = calendar.getEvents(startTime, endTime);
var event;
for (var i = 0, l = events.length; i < l; i++) {
event = events[i];
// この event の使い方は
// https://developers.google.com/apps-script/reference/calendar/calendar-event
// を参照
// たとえばイベント名をログ出力するには
Logger.log(event.getTitle());
}
}
テストするには
function testHandleCalendar() {
var email = Session.getActiveUser().getEmail();
handleCalendar(email);
}
とかやればいいはず
-
script を作れば勝手にプロジェクトが作られてると考えても差し支えないと思います。 ↩