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

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

新規登録して質問してみよう
ただいま回答率
85.83%
Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

Q&A

受付中

「フォームの回答を取得できませんでした。しばらくしてからもう一度お試しください」←エラー時に再びトライ方法

dshiraiwa
daishi

総合スコア9

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

0回答

0グッド

0クリップ

1561閲覧

投稿2023/02/05 13:03

実現したいこと

Googleフォームに入力された内容をメールで送るGASを実装しているのですが、エラーが出てしまいます。
こちらの方と同様です。

GAS:Googleフォームのデータを取得できないことがある
https://teratail.com/questions/panqo4tlz4fa7c

ただ、エラーにならない場合もあるため、
「もしエラーの場合は再びトライする」といったスクリプトについてご教授いただきたく質問させていただきました。

  • Googleフォームの入力内容をメールで送信
  • エラーにならなければ完了
  • エラーになった場合は、再びトライする
  • 再トライして完了すれば終了

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

Exception: フォームのデータを取得できませんでした。しばらくしてからもう一度お試しください。 at sendform(コード:2:17)

該当のソースコード

GAS

1function sendform(e){ 2var items = e.response.getItemResponses(); 3var msg = ''; 4var ttl = ''; 5 6var name = items[1].getResponse(); 7var jobno = items[2].getResponse(); 8ttl = jobno + ' ' + name + ' 納品報告'; 9 10for (var i = 0; i < items.length; i++) { 11var item = items[i]; 12var q = item.getItem().getTitle(); 13var a = item.getResponse(); 14msg += q + ':\n' + a + '\n\n'; 15} 16 17let draft = GmailApp.createDraft('メールアドレス', ttl, msg); 18let draftID = draft.getId(); 19GmailApp.getDraft(draftID).send(); 20}

試したこと

トリガーを一旦削除して再びつくる←効果なし。
ただ、上手くいく時が7~8割なので、その点が困っています。

よろしくお願いいたしますm(_ _)m

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

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

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

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

dshiraiwa

2023/02/05 15:22

とりあえず、エラーが起きた時には再びトライしてもらうように書き換えてみました。 ↓ function sendform(e){ var maxRetries = 3; var items; var msg = ''; var ttl = ''; for (var retry = 0; retry < maxRetries; retry++) { try { items = e.response.getItemResponses(); break; } catch (error) { if (retry === maxRetries - 1) { throw error; } Utilities.sleep(1000); } } var name = items[1].getResponse(); var jobno = items[2].getResponse(); ttl = jobno + ' ' + name + ' 納品報告'; for (var i = 0; i < items.length; i++) { var item = items[i]; var q = item.getItem().getTitle(); var a = item.getResponse(); msg += q + ':\n' + a + '\n\n'; } let draft = GmailApp.createDraft('メールアドレス', ttl, msg); let draftID = draft.getId(); GmailApp.getDraft(draftID).send(); }

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.83%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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