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

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

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

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

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

Q&A

解決済

2回答

2508閲覧

【再】GoogleFORM未提出者に毎朝8時に回答催促メールを自動で送りたい

Kimoty

総合スコア13

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

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

0グッド

0クリップ

投稿2022/05/24 14:13

編集2022/05/25 11:53

リンク内容
2022/05/20 21:21
こちらで質問し、一度解決したのですが、どういうわけか、色々いじっているうちにできなくなってしまいました。下書きをすれば500件/日送信可能と教えていただきましたが、100件/日でも対応できそうな気配なので、下書き無しで送信したいと考えています。

Exception: メールを送信できませんでした: 受信者が指定されていません(行 33、ファイル「コード」)

このようなメッセージが出るようになってしまい、メールを送信して完了することができません。

解決方法、もしくはより容易な方法等あれば知りたいです。分かる方教えて下さい。よろしくお願い致します。

仮想名簿
イメージ説明

当日指定
イメージ説明

const nameList = "仮想名簿"; // 名簿が保存されているシートの名前 const nameCol = 3; // 名簿のチェック対象となる列(1~) const answerList = "当日指定"; // 検索対象の回答が保存されているシートの名前 const answerCol = 2; // 回答のチェック対象となる列(1~)/ /**************************************************************************** 指定された名簿の中から、回答していないものを探す */ function searchUnrespondents() { // 名簿データを 2次元配列として読み込む const nameSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(nameList); const nameData = nameSheet.getDataRange().getValues(); // 回答データのチェック対象の列だけを 1次元配列として読み込む const answerSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(answerList); const answerData = answerSheet.getRange(2, answerCol, answerSheet.getLastRow() - 1).getValues().flat(); // 名簿データの行数分、回答の有無をチェックする for (let i = 1; i < nameData.length; i++) { const searchStr = nameData[i][nameCol - 1]; if (!answerData.includes(searchStr) ){ // 回答がない console.log(i + " : " + searchStr + " is " + answerData.includes(searchStr)); sendMail(nameData[i][1], nameData[i][3]) } } } function sendMail(name, mailAddress) { const formUrl = 'https://docs.google.com/forms/d/'; const title = '健康観察フォーム回答のお願い'; const body = `${name} さん\n\n本日の健康観察フォームが未回答です。\n至急、回答をお願いいたします。\n\n` +`:\n${formUrl}`; console.log(body) GmailApp.sendEmail(mailAddress, title, body); }

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

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

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

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

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

YAmaGNZ

2022/05/24 14:30

デバッグすればいいのではないですか? 「受信者が指定されていません」と出ているのであれば受信者がどうなっているか確認したのですか?
Kimoty

2022/05/24 14:42 編集

YAmaGNZ 様 ①デバッグすればいいのではないですか? 何をどうすれば、デバッグになるかが分かりません。 ②「受信者が指定されていません」と出ているのであれば受信者がどうなっているか確認したのですか? 受信者の確認の仕方が分かりません。 申し訳ありません。
k.a_teratail

2022/05/25 01:13

ソースコードは「コードの挿入」を使用して記載してください。
Kimoty

2022/05/25 07:49

大変失礼しました。以後無いようにします。
YAmaGNZ

2022/05/25 08:46

「GAS デバッグ」等で検索するなりご自身で努力されたとは思えません。 今までの質問で貰った回答でも自分で理解しようとせずコピペして動いたからいいやで終わっているとしか思えません。 このようなデバッグ依頼としか思えない質問や丸投げは推奨される質問ではありません。 また、質問は編集できますので「以後無いようにします」ではなくすぐ修正しましょう。
Kimoty

2022/05/25 12:48

YAmaGNZ様 不愉快な思いをさせてしまいすみませんでした。 コードの挿入については、編集しました。 こちらのサイトを初めて発見したときに「15分調べてもわからないことはteratailで質問してみよう」のような宣伝?広告?があり、それを真に受けていくつか質問させていただきました。 全くの素人ですので、YAmaGNZ様の仰る通り、コピペして動いたので、とても助かっていました。 現在のトップページを見ると『私達は、エンジニアが抱える問題の解決を全力でサポートします。 質問・回答によって生まれたコンテンツを、同じ問題を持った人に最適な形で届けます。』とあり、専門家の方々のためのサイトであることを認識しました。 大変失礼しました。ありがとうございました。
guest

回答2

0

ベストアンサー

gs

1// sendMail(nameData[i][1], nameData[i][3]) 2sendMail(nameData[i][1], nameData[i][2])

メールアドレス列の指定であれば、「nameData[i][2]」の指定でエラーは解消されるかと思います。

nameDataの内容は下記のような2次元配列になっています。
配列の添字は0から始まるので、「nameData[i][3]」は「undefined」になります。

[ [ 'no', 'name', 'メールアドレス' ], [ 1, 'abc', 'test1@co.jp' ], [ 2, 'def', 'test2@co.jp' ], [ 3, 'ghi', 'test3@co.jp' ], [ 4, 'jkl', 'test4@co.jp' ] ]

投稿2022/05/25 01:31

編集2022/05/25 07:09
k.a_teratail

総合スコア845

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

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

Kimoty

2022/05/25 12:38

k.a_teratail様 ご親切にありがとうございます。試してみます。
guest

0

sendMail(nameData[i][1], nameData[i][3])

引数が逆なんでは

#そもそもconsole.log出してるんだからそれ見ればわかるかと

投稿2022/05/24 20:53

y_waiwai

総合スコア87774

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

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

Zuishin

2022/05/25 04:29

逆でもだめでしょう。
Kimoty

2022/05/25 12:37

y_waiwai様 Zuishin様 出直します。 大変失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問