現在GASを使い、
Googleフォームで日付や電話番号・お名前入力
→スプレッドシート
→スプレッドシートの情報をGoogleカレンダーへ予定を入れる
上記を動かし予約カレンダーとして利用しているのですが、予約のキャンセルがあったときもフォーム入力で自動で予定の削除ができないかと方法を考えております。
現在考えている方法としまして下記の「キャンセル」のシートにフォーム送信があった際、シート「予約」から予約日と電話番号の二つの条件で検索し、行番号をindexOfなどで抽出をしたら列番号と行番号で対象のイベントIDの値を取り、deleteCalendar()で予定を削除しようと考えております(処理後C列に「済」を記帳)
しかしindexOfでは二つの条件で検索ができず、他に方法も思い浮かばないためこの度質問させていただきました。
また、処理を行う際に「予約」のB列とC列を合わせたものと「キャンセル」のA列とB列を合わせたものでindexOfを動かせないかと下記のコードを入力しましたが期待していた動作はされませんでした。
for文の書き方が合っているか、また動作しない理由もぜひ教えてください。
var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var mySheet = objSpreadsheet.getSheetByName("予約"); var dat = mySheet.getDataRange().getValues(); //シートデータを取得 var mySheet2 = objSpreadsheet.getSheetByName("キャンセル"); var dat2 = mySheet2.getDataRange().getValues(); //シートデータを取得 for(var i=1,j =1; i<dat.length, j<dat2.length; i++ ,j++){ var yoyaku = dat[i][1]+dat[i][2] var cancel = dat2[j][0]+dat2[j][1] var search = yoyaku.indexOf(cancel); }
GASに触れてからまだ日が浅く、説明が不明瞭なところもあるかと存じますが、質問やコメントをいただけましたら回答いたします。
何卒お教え願います。
予約
|名前|電話番号|予約日|イベントID
|:--|:--:|--:|
|aaa|09000000000|2020/7/25|xxxxxxxxxx
|bbb|08000000000|2020/7/25|yyyyyyyyyy
キャンセル
電話番号 | 予約日 | 反映 |
---|---|---|
09000000000 | 2020/7/25 |
追記
下記コードを使ってスプレッドシートよりGoogleカレンダーへ予定の書き出しをしているのですが(もとコードから書き換えがあるため書き間違えがある可能性あり)、このコードで出力されるイベントIDというのが「zzzzzzzzzzzzzzzz@google.com」というような形で出力されます。
しかし今回行いたいカレンダーの削除において必要なイベントIDとは文字列が異なるため正しいイベントIDの書き出し方を教えていただきたく存じます。
javascript
1function addTaskEvents() { 2 3var cal = CalendarApp.getCalendarById('xxxxxxxxxxxxxxxxx@group.calendar.google.com'); //カレンダーIDでカレンダーを取得 4 5var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 6 var mySheet = objSpreadsheet.getSheetByName("予約"); 7 var dat = mySheet.getDataRange().getValues(); //シートデータを取得 8 9for(var i=1;i<dat.length;i++){ 10 if(dat[i][3] == ""){ 11 12/* 日時をセット */ 13 var evtDate = new Date(dat[i][2]); 14 var evTime = "18:00" 15 var Name =dat[i][0] 16 var option =dat[i][1] 17 18var myEvt = cal.createEvent(Name , evtDate , evtTime , option); 19} 20 21dat[i][3]= myEvt.getID();//イベントIDを入力 22} 23mySheet.getRange(1,1,i,3).setValues(dat); 24} 25
回答1件
あなたの回答
tips
プレビュー