質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

3829閲覧

【google apps script】MailApp.sendEmail()が動作しない、送信済みフォルダにメールが残らない

kooooji049

総合スコア13

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2019/05/17 02:51

自分では解決できない問題にぶつかり、teratailで初めて質問さていただきます。
質問の仕方など、至らぬ点が多々あるかもしれませんが何卒よろしくお願いいたします。

概要

googleフォームを用いたセミナー申し込みフォームで、セミナー申し込み者に対し自動返信メールを送る環境を構築しました。しばらくは問題なく動作していましたが、突然自動返信メールが送られず送信済みフォルダにも送信履歴が残らなくなりました。

発生している問題・エラーメッセージ

googleフォームの回答をリンクしたスプレットシートに溜め、スプレットシートのスクリプトエディタからMailApp.sendEmail()を用いて自動返信メールを送ります。
イベントトリガーは「スプレッドシートから、フォーム送信時」としました。

少し前の現象で大変恐縮ですが、問題が発生したのは2019年4月22日から4月30日です。
5月1日以降は復旧し、問題なく動作しております。(返信メールも送られ、送信済みフォルダにも送信メールが残っています。)
その間、同じフォーム、スプレットシート、スクリプト、トリガーでセミナーの受付を行ない、スクリプト等の修正・変更はしておりません。

なお主題としている問題に関係あるか分かりませんが、スプレットシートからスクリプトを制御しているので、最近報告されている「MailApp.sendEmail()による重複送信」も合わせて頻発しております。
https://teratail.com/questions/176187
https://teratail.com/questions/174338
https://teratail.com/questions/177064

該当のソースコード

※個人情報が含まれますので、一部改変しております。

javascript

1function function(){ 2 3 // 件名、本文、フッター 4 var subject = "タイトル"; 5 var body 6 = "この度は、セミナーに申し込みいただき誠にありがとうございます。\n" 7 + "ご登録内容\n" 8 + "---------------------------------------------------------------------------------\n"; 9 var footer 10 = "---------------------------------------------------------------------------------\n\n" 11 + "止むを得ずキャンセルされる場合やご不明な点がございましたら、\n" 12 + "下記問い合わせ先までご連絡下さいますようお願い申し上げます。\n\n" 13 + "============================================\n" 14 + "問い合わせ先 担当\n" 15 + "株式会社〇〇 ◇◇部\n" 16 + "令和 太郎\n" 17 + "Email:〇〇@gmail.com\n" 18 + "============================================\n"; 19 20 // 入力カラム名の指定 21 var TIMESTAMP_LABEL = 'タイムスタンプ'; 22 var NAME_COL_NAME = '氏名'; 23 var NAME1_COL_NAME = '氏名(ひらがな)'; 24 var WORK_COL_NAME = '勤務先'; 25 var WORKTEL_COL_NAME = '勤務先電話番号';   26 var EMAIL_COL_NAME = 'Emailアドレス';  27 var EMAIL2_COL_NAME = 'Emailアドレス(再入力)'; 28 var JOB_CATEGORY_NAME = '職種'; 29 var NUM_COL_NAME = '会員番号'; 30 var INFO_COL_NAME = '通信欄'; 31 32 // メール送信先 33 var admin = "△△@gmail.com"; // 管理者 34 var reply = ""; // Reply-To:(問い合わせ先) 35 var to = ""; // To: (入力者のアドレスが自動で入る) 36 37 try{ 38 // スプレッドシートの操作 39 var sh = SpreadsheetApp.getActiveSheet(); 40 var rows = sh.getLastRow(); 41 var cols = sh.getLastColumn(); 42 var rg = sh.getDataRange(); 43 44 // メール件名・本文作成と送信先メールアドレス取得 45 for (var j = 1; j <= cols; j++ ) { 46 var col_name = rg.getCell(1, j).getValue(); // カラム名 47 var col_value = rg.getCell(rows, j).getValue(); // 入力値 48 if ( col_name === WORK_COL_NAME ) {  //メール本文の最初に勤務先を入れる 49 body = col_value+"\n"+body; 50 } 51 if ( col_name === NAME_COL_NAME ) {  //メール本文の最初に名前を入れる 52 body = col_value+" 様\n\n"+body; 53 } 54 if ( col_name === EMAIL_COL_NAME ) {  //メールアドレス 55 to = col_value; 56 } 57  if ( col_name === TIMESTAMP_LABEL ) { //タイムスタンプ⇒申込日時 58 col_name = '申込日時'; 59 } 60 if ( col_name === WORK_COL_NAME ) { //勤務先 61 col_name = '勤務先'; 62 } 63 64 if ( col_name === WORKTEL_COL_NAME ) { //勤務先電話番号 65 col_name = '勤務先電話番号'; 66 } 67 68 if ( col_name === EMAIL_COL_NAME ) { //Emailアドレス 69 col_name = 'Emailアドレス'; 70 } 71 72 if ( col_name === EMAIL2_COL_NAME ) {  //メールアドレス(確認用) 73 col_name = 'Emailアドレス(確認用)'; 74 } 75 76 if ( col_name === JOB_CATEGORY_NAME ) {  //職種 77 col_name = '職種'; 78 } 79 80 if ( col_name === NUM_COL_NAME ) { //会員番号 81 col_name = '会員番号'; 82 } 83 84 if ( col_name === INFO_COL_NAME ) { //通信欄 85 col_name = '通信欄'; 86 } 87 88 89 // 日付フォーマットの変換 90 if ( col_name === '申込日時' ) { 91 col_value = Utilities.formatDate(col_value, "JST", "yyyy'年'MM'月'dd'日' HH:mm:ss");; 92 } 93 body += "【"+col_name+"】"; 94 body += col_value + "\n"; 95 } 96 body += footer; 97 98 // 送信先オプション 99 var options = {}; 100 if ( reply ) options.replyTo = reply; 101 102 // メール送信 103 if ( to ) { 104 MailApp.sendEmail(to, subject, body, options); 105 }else{ 106 MailApp.sendEmail(admin, "【失敗】Googleフォームにメールアドレスが指定されていません", body); 107 } 108 }catch(e){ 109 MailApp.sendEmail(admin, "【失敗】Googleフォームからメール送信中にエラーが発生", e.message); 110 } 111 112} 113 114

試したこと

問題の起きたgoogleアカウントで、新たに別のフォームとスプレットシートを建てて同じスクリプト、同じ内容のトリガーで返信メールが送られるか試しましたが、メールは送られず、送信済みフォルダにも残りませんでした。

別のgoogleアカウントで同じ環境を再現すると問題なく送信されました。

問題が起きたのはfreeのgoogleアカウントであったため、google apps scriptの制限を疑いましたが、メール送信数、トリガーの合計実行時間等、問題ありませんでした。

次にトリガー設定を疑い、トリガーログを調べましたがステータスは全て「完了」となっており、トリガーの動作は問題ないと考えました。

現在の状態

現在は復旧しており、問題の現象を再現できません。
MailAppではなくGmailAppだと誤動作がないという書き込みは見かけましたが、根本的な原因がわからず気持ちが悪いです。
同じような現象を経験された方がいらしたら何かご教授いただけないでしょうか。
(当該期間中にAPIの不具合があった等の情報でも嬉しいです。)
よろしくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

macaron_xxx

2019/05/20 01:41

何が聞きたいんですか? 不具合ならGoogleに問い合わせないと誰もわかりません。
kooooji049

2019/05/20 10:56

macaron_xxx様 質問内容が不明確で申し訳ございません。 私の不手際ですが、問題の現象が起こった際にスクリプトのトレースによる問題の切り分けを行いませんでした。 そうこうしているうちに何の変更も加えていないのに復旧したため、原因がわからなくなりました。 教えていただきたかった事は、 ①同様の現象を経験し原因究明した方がいれば、原因は何であったのか ②当該期間中にAPIの不具合はあったのか です。 しかしmacaron_xxx様のご指摘の通り、Googleに問い合わせるべき内容でした。 不適切な質問でお騒がせをして申し訳ございませんでした。
guest

回答1

0

自己解決

プログラミングの本質とは離れた質問であり、teratailでの質問として適切でありませんでした。
自己解決として質問を閉じます、大変失礼しました。

投稿2019/05/21 08:32

kooooji049

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問