質問: male; } body += body2; GmailApp.sendEmail(address,title,body,{ from:'aaaaaa@gmail.com',name:'ああああああああ’ }); } ``` ### 考えていること スプレッドシートに「送信済み」のような列を足し、自動返信後に、その列にマークを挿入する。 また、「送信済み」の列にマークがなければ、その行の回答者に自動返信メールを送る。 このような方法で問題が解決できるでしょうか。また、ほかによい方法があれば、ご教示いただけないでしょうか。
回答: このScriptはSheeetsのGASでonFormSubmitトリガーを利用して実装されていると思いますが、 SheetsのonFormSubmitトリガーでは設定している関数に対して、イベントオブジェクトが渡され、その中に回答が入っていますので、その値を利用するといいと思います。 onFormSubmitトリガーのイベントオブジェクト 以下実装例です。 ``` function autoreply(e){ var title = "送信をうけつけました。" //自動返信メールの本文 var body = "●●●について送信をうけつけました。\n" + "-------------------------------------\n"; var body2 = "-------------------------------------\n"; // // 追加 e.rangeで回答行のRangeが取れます。 var range = e.range; //スプレッドシートから各項目の値を取得 var name = range.getCell(row, 2).getValue(); //名前 var male = range.getCell(row, 3).getValue(); //メールアドレス var evtDate = range.getCell(row, 4).getValue(); //月日 var evtTime = range.getCell(row, 5).getValue(); //時間 // なお実際には↑のコードですとセルへのアクセスが頻繁に起きるためパフォーマンスが良くありません。 // 以下のようにイベントオブジェクトから直接値を取得したほうがいいでしょう。 // var name = e.values[1]; // var male = e.values[2]; // var evtDate = e.values[3]; // var evtTime = e.values[4]; body += evtDate + evtTime + "\n\n"; { body = name+" 様\n\n"+body; } { address = male; } body += body2; // 質問から外れますが、単純にメールの送信をするだけであれば、 // GmailAppを利用するよりMailAppを利用したほうが、権限周りの関係で良いです。 GmailApp.sendEmail(address,title,body,{ from:'aaaaaa@gmail.com',name:'ああああああああ’ }); } ```