Last active
February 4, 2018 23:42
-
-
Save hedgejanuary/c5ecda34459f2a8becfdecfee1eba877 to your computer and use it in GitHub Desktop.
Posting events from Google Spreadsheet to Google Calendar
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* カレンダーへイベントを登録する */ | |
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