STEP4. スプレッドシートの値をGoogleカレンダーへ登録(時間取得)
スプレッドシートの値を「時間・分・秒」に変換していきます。
//i行4列目の値(開始時刻)をstartへ格納
var starttime = sht.getRange(i,4).getValue();
var H = starttime.getHours();//starttimeの時間を取得してHへ格納
var M = starttime.getMinutes();//starttimeの分を取得してMへ格納
var S = starttime.getSeconds();//starttimeの秒を取得してSへ格納
//new Dateメソッドで開始日時「yyMMdd hh:mm」をstartへ格納
var start = new Date(b+" "+H+":"+M+":"+S);
//i行5列目の値(終了時刻)をendへ格納
var endtime = sht.getRange(i,5).getValue();
var H1 = endtime.getHours();//endtimeの時間を取得してH1へ格納
var M1 = endtime.getMinutes();//endtimeの分を取得してM1へ格納
var S1 = endtime.getSeconds();//endtimeの秒を取得してS1へ格納
//new Dateメソッドで終了日時「yyMMdd hh:mm」をendへ格納
var end = new Date(b+" "+H1+":"+M1+":"+S1);
STEP4−1. 開始時刻を変数へ設定
i行4列目の値を「時間・分・秒」へ変換し、各「H・M・S」へ代入します。
//i行4列目の値(開始時刻)をstartへ格納
var starttime = sht.getRange(i,4).getValue();
var H = starttime.getHours();//starttimeの時間を取得してHへ格納
var M = starttime.getMinutes();//starttimeの分を取得してMへ格納
var S = starttime.getSeconds();//starttimeの秒を取得してSへ格納
- getHours()で取得したセル日時の時間を返します。
- getMinutes()で取得したセル日時の分を返します。
- getSeconds()で取得したセル日時の秒を返します。
getSeconds(秒)は作成しなくてもカレンダーへ登録できます。
STEP4-2. 開始日と開始時間をまとめる
取得した開始日と開始時間をまとめます。
⏬
//new Dateメソッドで開始日時「yyMMdd hh:mm」をstartへ格納
var start = new Date(b+" "+H+":"+M+":"+S);
createEvent(title, startTime, endTime, options)
名 タイプ 説明 title String イベントのタイトル startTime Date イベントが開始された日時 endTime Date イベントが終了した日時 options Object 以下に示す高度なパラメーターを指定するJavaScriptオブジェクト 引用元:createEvent
STEP4-3. 終了時刻を変数へ設定
開始日時と同様にi行5列目の値を「時間・分・秒」に変換し「H1・M1・S1」へ格納したら、終了日とまとめてendへ格納します。
//i行5列目の値(終了時刻)をendへ格納
var endtime = sht.getRange(i,5).getValue();
var H1 = endtime.getHours();//endtimeの時間を取得してH1へ格納
var M1 = endtime.getMinutes();//endtimeの分を取得してM1へ格納
var S1 = endtime.getSeconds();//endtimeの秒を取得してS1へ格納
//new Dateメソッドで終了日時「yyMMdd hh:mm」をendへ格納
var end = new Date(b+" "+H1+":"+M1+":"+S1);
STEP5. イベントをカレンダーへ登録する
ここまで取得した値をカレンダーへ登録していきます。またカレンダー登録が完了したら ”登録完了” と表示が出るように設定していきます。
/*--カレンダーへ登録--*/
//i行6列目の値(イベント登録有無)をaddedへ格納
added = sht.getRange(i,6).getValue();
//addedの値が空白だったらカレンダー登録を実行
if(added == "") {
Cal = CalendarApp.getCalendarById("◯◯◯@gmail.com");
//指定のカレンダーIDへインベント登録
Cal.createEvent(eventname,start,end,{location:place});//createEvent(タイトル、開始日時、終了日時、オプション)
//カレンダー登録が終わったイベントのaddedへ「登録完了」を記入
sht.getRange(i,6).setValue("登録完了");
} //ifを閉じる
} //forを閉じる
} //functionを閉じる
STEP5-1. イベントの有無を取得
i行6列目の値をaddedへ格納します。
//i行6列目の値(イベント登録有無)をaddedへ格納
added = sht.getRange(i,6).getValue();
STEP5-2. addedが空白ならイベント登録を開始
i行6列目の値(added)が空白ならイベント登録を開始します。
//addedの値が空白だったらカレンダー登録を実行
if(added == "") {
Cal = CalendarApp.getCalendarById("◯◯◯@gmail.com");
//指定のカレンダーIDへインベント登録
Cal.createEvent(eventname,start,end,{location:place});//createEvent(タイトル、開始日時、終了日時、オプション)
//カレンダー登録が終わったイベントのaddedへ「登録完了」を記入
sht.getRange(i,6).setValue("登録完了");
今まで変数に格納した値をcreateEventメソッドに設置していきます。
//指定のカレンダーIDへインベント登録
Cal.createEvent(eventname,start,end,{location:place});//createEvent(タイトル、開始日時、終了日時、オプション)
- eventname = イベントの名前
- start = イベント日 + 開始時刻
- end = イベント日 + 終了時刻
- place = 場所
カレンダー登録が完了したイベントに”登録完了”を記入します。
//カレンダー登録が終わったイベントのaddedへ「登録完了」を記入
sht.getRange(i,6).setValue("登録完了");
} //ifを閉じる
} //forを閉じる
} //functionを閉じる
上手く設定が完了すればこんな感じに実行出来ていると思います。
スプレッドシートとカレンダーを連携してイベントを一括登録する方法. まとめ
スプレッドシートからGoogleカレンダーへ上手く連携は出来ましたか?
説明が長くなってしまいましたがまとめると
- スプレッドシートの値を取得して
- 日付けや時間をフォーマットして
- カレンダー登録
という流れになります。
あまりにも長くなってしまったのですが、次回はもうちょっとスマートにお伝え出来るようにがんばります。
関連記事: 【即戦力】GASでアラートメールを作成して期日になったら自動通知
関連記事: スプレッドシートのマクロの使い方|3STEPで簡単自動化
関連記事: スプレッドシートで複数ある重複セルごとに色を変更する方法