GAS初心者です。
GASで自動返信を調べながらやってみたのですが、上手くできず質問させていただきます。
【実現したい事】
・フォーム回答があったら、回答者へ自動返信をする
・自動返信の本文はドキュメントの内容を使用
・特定の回答のみ自動返信を送る(こちらは調べても分かりませんでした。)
下記のメール本文用ドキュメントURLは、
URLを入力し、トリガーを設定したところ
自動返信はされませんでした。
ご教授いただければ幸いです。
宜しくお願い致します。
function onFormSubmit(e){
var name = '';
var email = '';
// フォームの回答を取得
var itemResponses = e.response.getItemResponses();
for (var i = 0; i < itemResponses.length; i++) {
var itemResponse = itemResponses[i];
var question = itemResponse.getItem().getTitle();
var answer = itemResponse.getResponse();
if(question == 'お名前'){name = answer;}
else if(question == 'メールアドレス'){email = answer;}
}
// 返信メール内容を取得
var mailContent = getMailContent();
// 自動返信メール件名
var subject = 'お問い合わせありがとうございました。';
// 自動返信メール本文
var body = name + '様\n\n' + mailContent;
// メール送信
MailApp.sendEmail({
to: email,
subject: subject,
body: body
});
}
function getMailContent() {
const DOC_URL = 'メール本文用ドキュメントURL';
const doc = DocumentApp.openByUrl(DOC_URL);
return doc.getBody().getText();
}
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/03/25 09:25
2023/03/27 00:38
2023/03/27 00:40
2023/03/27 00:42
2023/03/27 00:48
2023/03/27 01:42
2023/03/27 01:45
2023/03/27 01:46
回答3件
0
(こちらは古い回答ですので5回目の回答をご覧ください。)
投稿2023/03/27 08:13
編集2024/04/26 18:31総合スコア791
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/03/27 14:00 編集
2023/03/27 19:35
2023/03/29 00:58
2023/03/29 01:05
2023/03/29 01:10
2023/03/29 01:15
2023/03/29 07:37 編集
2023/03/29 07:52
2023/03/29 16:13 編集
2023/03/29 16:16
2023/03/30 07:21 編集
2023/03/30 02:38
2023/03/30 08:59
2023/03/30 09:07 編集
2023/03/30 09:42
2023/03/30 09:43
2023/03/31 21:58 編集
2023/03/31 22:15 編集
2023/03/31 22:01
2023/04/03 13:19
2023/04/04 01:27
2023/04/05 14:14
2023/04/05 14:55 編集
2023/04/05 22:54
2023/04/05 23:06
2023/04/05 23:10
2023/04/05 23:13
2023/04/10 08:00
2023/04/10 08:01
2023/04/10 08:06
2023/04/10 08:09
2023/04/10 09:22 編集
2023/04/10 09:18 編集
2023/04/10 23:20
2023/04/10 23:21
2023/04/11 00:41 編集
2023/04/15 01:28
2023/04/15 01:51
2023/04/15 02:05
2023/04/15 02:25 編集
2023/04/15 02:27
2023/04/15 02:28
2023/04/15 02:35
2023/04/15 02:44
2023/04/15 02:48 編集
2023/04/15 02:45
2023/04/15 02:49
2023/04/15 02:51
2023/04/15 02:53
2023/04/15 03:07
2023/04/17 09:49
2023/04/17 10:36 編集
2023/04/18 14:51
2023/04/18 14:57 編集
2023/04/18 15:01
2023/04/19 19:00 編集
2023/04/20 15:13 編集
2023/04/20 15:16 編集
2023/04/20 18:24 編集
2023/04/20 23:30
2023/04/21 01:10 編集
2023/04/21 09:36 編集
2023/04/21 09:44
2023/04/21 09:47 編集
2023/04/21 20:21
2023/04/21 21:14 編集
2023/05/19 23:03
2023/05/19 23:37
2023/05/19 23:43 編集
2023/06/04 23:32
2023/06/04 23:45
2023/06/04 23:51
2023/08/15 17:53 編集
0
5度目の回答です。
選択肢の回答との一致の確認を文字列から配列要素に変更しました。
また、一致、不一致のいずれでも実行数にログが残るようにしました。
フォームで回答を送信後、しばらくしてからエディタの実行数に残るログを確認してみてください。
ログが表示されないときは、ブラウザをリロードしてみてください。
JavaScript
1function onFormSubmit(e) { 2 //送信メールの内容以外で実行環境にあわせて書き換える部分は次の6行とドキュメントのIDです 3 const qName = '氏名';//←名前の質問名 4 const qSelect = 'どれがいいでしょうか';//←選択肢の質問に含まれる言葉 5 const aSelect = [ 6 '東京',//←選択肢のうち返信対象の回答を引用符の中に記載(複数ならカンマで区切る) 7 '大阪',//←選択肢が数値のときは、引用符を付けずに直接記載( 9, などのように) 8 ]; 9 //エディタから実行したとき 10 if (e === undefined) { 11 console.log('エディタからは実行できません。フォームから回答してください。'); 12 return; 13 } 14 let aName = ''; 15 let aEmail = ''; 16 // フォームの回答を取得 17 let isMatch = false; 18 const itemResponses = e.response.getItemResponses(); 19 aEmail = e.response.getRespondentEmail();//←自動のメールアドレスを取得 20 for (const itemResponse of itemResponses) { 21 const question = itemResponse.getItem().getTitle();//質問項目名 22 const answer = itemResponse.getResponse();//質問項目への回答 23 if (question.includes(qSelect)) {//選択肢の質問項目への回答のとき 24 const match = aSelect.find(v => v == answer);//一致する選択肢を確認 25 if (match) {//選択肢のいずれかに一致するものがある 26 isMatch = true; 27 //返信対象項目が選ばれた。 28 console.log('回答がいずれかの選択肢と一致しました。'); 29 console.log('一致した選択肢:[' + match + ']' + ' フォームの回答:[' + answer + ']'); 30 } else {//一致する選択肢が無い 31 //返信対象項目が選ばれなかった。 32 console.log('回答がいずれの選択肢とも一致しませんでした。'); 33 aSelect.forEach((v, i) => console.log('選択肢' + (i + 1) + ':[' + v + ']' + ' フォームの回答:[' + answer + ']')); 34 break;//選択項目以外が選ばれていたら処理を中断 35 } 36 } else if (question == qName) { 37 aName = answer; 38 } 39 } 40 if (isMatch) { 41 // 返信メール内容を取得 42 const mailContent = getMailContent(); 43 // 自動返信メール件名 44 const subject = 'お問い合わせありがとうございました。'; 45 // 自動返信メール本文 46 const body = aName + '様\n\n' + mailContent; 47 // メール送信(エイリアスがあるならエイリアスで送信) 48 const aliases = GmailApp.getAliases();//エイリアス取得 49 console.log('to: ' + aEmail + '\nsub: ' + subject + '\nbd: ' + body); 50 console.log(aliases); 51 GmailApp.sendEmail(//MailApp → GmailApp 52 aEmail, 53 subject, 54 body, 55 { 56 from: aliases[0],//←インデックスでエイリアスを指定 57 name: '差出人の表示' //←差出人の名前 58 } 59 ); 60 } 61} 62function getMailContent() { 63 const DOC_URL = 'xxxxxxxxxx'; 64 const doc = DocumentApp.openByUrl(DOC_URL); 65 return doc.getBody().getText(); 66}
投稿2023/06/05 00:42
編集2023/06/05 07:49総合スコア791
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/06/05 00:44
2023/06/09 06:24
2023/08/15 17:55 編集
2023/09/16 06:40
2023/09/16 06:42
2024/02/27 10:40
0
(こちらは古い回答ですので、5回目の回答をご確認ください。)
投稿2023/04/04 02:39
編集2024/04/26 18:31総合スコア791
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/04/05 14:58
2023/04/05 22:44
2023/04/05 23:17
2023/09/16 06:51 編集
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。