前提・実現したいこと
Google Apps Scriptを使ってフォームの送信時にその内容をGoogleカレンダーに反映させて
フォームが送信されたことを知らせるメールを送れるようにしたいです。
当方独学の初心者です。
フォームの内容は、店の予約のようなもので
質問は、名前、日時、時間、場所、詳細の5項目です。
場所は、ラジオボタンで2択にしていて、仮にaaaとbbbとします。
場所ごとに担当者がいて、aaaを選択したら、aaaの担当者4名にメールが行くようにしたいです。
カレンダーは共有のものをしようしていますので、1つだけ反映されれば問題ありません。
欲を言えば、カレンダーの招待メールを送りたいところですが、
GASの仕様上、未対応?のようなことを見かけたので共有のカレンダーを使用しています。
発生している問題・エラーメッセージ
フォーム送信時にエラーメッセージは出ませんが、
カレンダーにもメールの送信もされません。
いろいろと調べながら作っていたので
そもそもコード自体が間違っている可能性は大いにありますが、
どこをなおしていいものかわからず、大変困っています。
該当のソースコード
function sendToCalendar(e) { //有効なGoogleスプレッドシートを開く var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var dat = sheet.getRange().getValue(); //ゲストを設定 var aaag = "aaa@aaa.co.jp,bbb@aaa.co.jp,ccc@aaa.co.jp,ddd@aaa.co.jp" var bbbg = "aaa@bbb.co.jp,bbb@bbb.co.jp,ccc@bbb.co.jp,ddd@bbb.co.jp" //追加された行番号を取得 var num_row = sheet.getLastRow(); //追加された行から名前を取得 var nname = dat[num_row][1]; //追加された行から場所を取得 var loc = dat[num_row][4] //詳細欄の取得 var des = dat[num_row][5]; //予約を記載するカレンダーを取得 if(loc =="aaa"){ id="aaa@google.com"; guest=aaag;} else if(loc =="bbb"){ id="bbb@google.com"; guest=bbbg;} var cals = CalendarApp.getCalendarById(id); /* 日時をセット */ var evtDate = new Date(dat[i][2]); var evtTime = new Date(dat[i][3]); evtDate.setHours(evtTime.getHours()); evtDate.setMinutes(evtTime.getMinutes()); //予約情報をカレンダーに追加 thisevent = cals.createEvent(nname, evtDate, evtDate,{location: loc, description: des, guests:(guest), sendinvite: true}); //メールの送信 var to = (guest); var sub = "タイトル" var body="本文"; MailApp.sendEmail({to:to,subject:sub,body:body}) }
試したこと
同時に行うのがダメなのかと思い、カレンダーへの反映とメール送信それぞれ単体でスクリプトを作り
試しましたが、その時はうまくいきました。
補足情報(FW/ツールのバージョンなど)
不足している情報がございましたら、ご指摘いただけますと幸いです。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー