事前準備
事前準備として下記2点が必要です。
- トリガー設定でフォーム送信時にsubmitFormを実行させる設定 認証作業
- の認証作業を行うのに下記関数を実行してください。 一度実行したらこの関数は消して問題ないです。
function test() {
FormApp.getActiveForm();
GmailApp.getAliases();
}
メール送付が不要でしたらGmailAppの認証は通さなくて大丈夫です。
メールアドレスを取得する場合
下記コードの
e.response.getRespondentEmail()
でメールアドレスを取得していますが、
取得するためにはフォームの設定でメールアドレスを取得する
にチェックする必要があります。
コード
全ての項目名と回答をセットで送る設定になっているので、
不要な項目がある場合はコードを修正する必要があります。
function submitForm(e){//フォームが送信されたら呼び出される,重複処理を避ける
var lock = LockService.getScriptLock();//ロックサービスのオブジェクトを生成
try{
lock.waitLock(30000);//複数のフォーム送信がほぼ同時にあった時,遅い方に最大30秒待ってもらう
Logger.log("コピー作業開始");
main(e);
}catch(err){
Logger.log("発生したエラー:"+err);
}finally{
lock.releaseLock();//次の送信のためにロック解除
Logger.log("コピー作業終了");
}
}
function main(e){
// 回答一覧の取得
const itemResponses = e.response.getItemResponses();
// 質問一覧の取得
const items = FormApp.getActiveForm().getItems();
// メールアドレスの取得
let text = e.response.getRespondentEmail();
for(let i=0; i<items.length; i++){
text += `\n\n${items[i].getTitle()}\n`; // 質問を順にテキストに追加
text += itemResponses[i].getResponse(); // 回答を順にテキストに追加
}
const recipient = '';
GmailApp.sendEmail(recipient, '', text);
}