Skip to content

Instantly share code, notes, and snippets.

@hedgejanuary
Last active February 4, 2018 23:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hedgejanuary/c5ecda34459f2a8becfdecfee1eba877 to your computer and use it in GitHub Desktop.
Save hedgejanuary/c5ecda34459f2a8becfdecfee1eba877 to your computer and use it in GitHub Desktop.
Posting events from Google Spreadsheet to Google Calendar
/* カレンダーへイベントを登録する */
function pushToCalendar() {
//シートの項目を以下変数定義
var dSheet, Cal, i, Title, StartDate, StartTime, EndDate, EndTime, AllDayEvent, Description, Location, Status;
//dSheetを定義
dSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
//calendar variables
Cal = CalendarApp.getCalendarById("XXXXX.google.com"); //<---XXXXXを自分のgmailアドレスへ変更する
//シートの2行目〜最終行まで処理を繰り返す
for (i = 2; i <= dSheet.getLastRow(); i++) {
/*--スプレッドシートの値を取得して変数へ格納--*/
//i行1列目の値(Title)をTitleへ格納
Title = dSheet.getRange(i, 1).getValue();
//i行2列目の値(Start Date)をStartDateへ格納
StartDate = dSheet.getRange(i, 2).getValue();
//開始日をUtilities.formatDateでフォーマットしてbへ格納
var b = Utilities.formatDate(StartDate, "JST", "yyyy/MM/dd");
//i行3列目の値(Start Time)をStartTimeへ格納
var StartTime = dSheet.getRange(i, 3).getValue();
if (StartTime == "") {
//do nothing
} else {
//StartTimeの時間を取得してSHへ格納
var SH = StartTime.getHours();
//StartTimeの時間を取得してSMへ格納
var SM = StartTime.getMinutes();
//StartTimeの時間を取得してSSへ格納
var SS = StartTime.getSeconds();
//new Dateメソッドで開始日時「yyMMdd hh:mm」をStartへ格納
var Start = new Date(b + " " + SH + ":" + SM + ":" + SS);
}
//i行4列目の値(End Date)をEndDateへ格納
EndDate = dSheet.getRange(i, 4).getValue();
//終了日をUtilities.formatDateでフォーマットしてcへ格納
var c = Utilities.formatDate(EndDate, "JST", "yyyy/MM/dd");
//i行5列目の値(End Time)をEndTimeへ格納
var EndTime = dSheet.getRange(i, 5).getValue();
if (EndTime == "") {
//do nothing
} else {
//endtimeの時間を取得してH1へ格納
var EH = EndTime.getHours();
//endtimeの分を取得してM1へ格納
var EM = EndTime.getMinutes();
//endtimeの秒を取得してS1へ格納
var ES = EndTime.getSeconds();
//new Dateメソッドで終了日時「yyMMdd hh:mm」をEndへ格納
var End = new Date(c + " " + EH + ":" + EM + ":" + ES);
}
//i行目6列目の値(終日イベントかどうか)をAllDayEventへ格納(yなら終日イベント)
AllDayEvent = dSheet.getRange(i, 6).getValue();
//i行目7列目の値(Description)をDescriptionへ格納
Description = dSheet.getRange(i, 7).getValue();
//i行8列目の値(Location)をLocationへ格納
Location = dSheet.getRange(i, 8).getValue();
/*--カレンダーへ登録--*/
//i行9列目の値(イベント登録有無)をStatusへ格納
Status = dSheet.getRange(i, 9).getValue();
//Statusの値が空白だったらカレンダー登録を実行
if (Status == "") {
//指定のカレンダーIDへインベント登録
if (AllDayEvent == 'y' && b == c) {
Cal.createAllDayEvent(Title, StartDate, {
description: Description,
location: Location
});
dSheet.getRange(i, 9).setValue("Posted");
} else if (AllDayEvent == 'y' && b != c) {
Cal.createAllDayEvent(Title, StartDate, EndDate, {
description: Description,
location: Location
});
dSheet.getRange(i, 9).setValue("Posted");
} else {
Cal.createEvent(Title, Start, End, {
description: Description,
location: Location
}); //createEvent(タイトル、開始日時、終了日時、オプション)
//カレンダー登録が終わったイベントのStatusへ「Posted」を記入
dSheet.getRange(i, 9).setValue("Posted");
} //ifを閉じる
}
} //forを閉じる
} //functionを閉じる
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment