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

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

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

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

Q&A

1回答

406閲覧

Google Apps Scriptを使用してメール一括送信したいです

pahimon

総合スコア12

JavaScript

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

0グッド

0クリップ

投稿2019/04/27 14:52

前提・実現したいこと

ここに質問の内容を詳しく書いてください。

はじめまして。お世話になります。ご質問があります。

初めてGoogle Apps Scriptを使ってみようとおもったのですがプログラムがわからないので行き詰まってしまいました。検索しながらやってみたのですが、スプレットシートのメール送信をクリックしても送信できないのでなにをどうすればいいか知りたいです。

今やろうとしているのは以下の通りです。

フォームで送られてきたものをスプレットシートに表示させ、その中のメールアドレスと名前を使用して、ドキュメントに作ったメッセージ本文を一括送信するという仕組みをつくりたいのです。

いろいろ直してやっと送信しようとしましたら

メッセージの詳細
スクリプト関数 sendEmails が見つかりません。詳しくは https://developers.google.com/apps-script/reference/base/menu#addItem(String,String) をご覧ください。

とエラーが出てきてしまいました。

しかし、いろいろやってみたのですが、何が間違っているのかどうすればいいかわかりませんでした。

プログラム初心者でもわかるようにお願いできれば幸いです。

画像が記載したコードです。

何卒宜しくお願い致します。

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

スクリプト関数 sendEmails が見つかりません。詳しくは https://developers.google.com/apps-script/reference/base/menu#addItem(String,String) をご覧ください。

該当のソースコード

調べてる中で確認できたのはJavaScriptと記載あったのでおそらくJavaScriptです。

試したこと

今回はスプレットシートに記載された列の中のメルアドと名前を使って、登録された方に作成したイベントのお知らせを一括送信する設定をしたかったので、基本検索して近いものをコピペしました。その中でエラーが何回も出たので検索しながらやり直ししたのですが、どうしても一括送信に行きつかなくて根をあげてしまいました。コードの何が悪いのかが知識があまりないためわかりません。(htmlコーディングと何となくプログラムはどういうものか程度にしか知識がありません)何卒お力をお貸しいただけるとありがたいです。

補足情報(FW/ツールのバージョンなど)

現在記載しているソースの画像を貼ります。よろしくお願いいたします。イメージ説明

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

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

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

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

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

guest

回答1

0

javascript

1function __myFunction() { 2 Browser.msgBox("hello " + Session.getEffectiveUser().getEmail()); 3} 4function myFunction() { 5 const sheet = SpreadsheetApp.getActiveSheet(); 6 const dats = sheet.getDataRange().getValues().slice(1); 7 8 const mailTemplateBody = DocumentApp.openById("").getBody().getText(); 9 10 const subject = "subject of mail"; 11 const sendOption = {from : "me@gmail.com", name = "john doe"}; 12 13 dats.forEach(function(r) { 14 if(r[1] == "") return; 15 GmailApp.sendEmail(r[1], subject, mailTemplateBody.replacde(/{お名前}/g, r[2], sendOption); 16 }); 17}
  • コードはコピペしてください
  • この図のコードからそのエラーは発生しません。事実と違うことを書かないでください。
  • 図のコードは正常に動作しそうです。いちおうtoが空欄のときはエラーになりそうだったので、そこだけ手当してます。
  • 動作検証していません

投稿2019/04/29 13:03

編集2019/05/04 14:02
papinianus

総合スコア12705

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

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

pahimon

2019/05/03 08:35

papinianus様 ご返信遅くなって申し訳ございませんでした。 早速コピペで動作確認させていただいたのですが、動作確認するとメールが送られてきませんでした。 ドキュメントのIDを入れていないからかもしれないので、もしこのなかに入れるとしたらどの部分をどのあたりに入れるのが正解なのでしょうか? 以前作ったコードでもエラーが出てメール送信ボタンがきえてしまったのですが、スクリプトの▶ボタンを押すと突然メールが送られるようになってるのですがこの動作がちゃんと反映されているのか不安です。(自分の持ってるアドレス2件をスプレットシートに登録してみてテストしてます) 大丈夫とならないと、多くの登録者様に送って送られてなかったなんてことになったらと思うと使用できないので、とても不安です。 かといってソース見てこれで大丈夫かどうか見分ける力もありませんし、いまだスクリプトのほうでは「メールを送信できませんでした: 受信者が指定されていません(行 38、ファイル「コード」) 」とのワーニングがでます。ワーニングは出るのに2つのメルアドにはメールが届きます。 またアドバイスお願いできたら幸いです。 よろしくお願いいたします。
papinianus

2019/05/04 14:01

> コピペで コピペは自身で書いた?コードの話です。ただでさえコードを無償で書けといっている(質問ではない)のに、元のコードすら動かしてみたければタイピングし直せというのはちょっとどういうことか考えてみたほうがよろしいと思います > ドキュメントのID 図のコードをそのままもってきているので(冗長・無意味でしかないところは除外したものの)、ドキュメントのIDが分からないとはならないはずです。図のなかにもドキュメントのidがどうたらというコメントがあります。こちらではそのIDは知りようがないです。どの部分のどのあたりっていうのも分かりません > エラーが出てメール送信ボタンがきえてしまった 意味不明です。この程度のコードでGmailを壊せるわけがないです。少なくとも私には無理です。 > スクリプトの▶ボタンを押すと突然メールが送られるようになってるのですがこの動作がちゃんと反映されているのか不安です。(自分の持ってるアドレス2件をスプレットシートに登録してみてテストしてます) 「動作が反映」は日本語として理解不能でした。 > とても不安です。かといってソース見てこれで大丈夫かどうか見分ける力もありません つまりこの質問は解決方法が定まっていない質問ということですか?安易に手を出して失敗しました。元のソースから改変されているのは、図で提示したからです。コードで提示していれば(私はとても怠けものなので)最小限の加筆で済ませたでしょう。 > いまだスクリプトのほうでは「メールを送信できませんでした: 受信者が指定されていません(行 38、ファイル「コード」)」とのワーニングがでます。ワーニングは出るのに2つのメルアドにはメールが届きます。 > またアドバイス こちらのコメントをご覧いただけていないのでしょうか?これ以上のアドバイスは今のところ不可能です。なぜならこちらが推察できる以上の新しい情報がもたらされなかったからです。 あらためて書きますが「図のコードは正常に動作しそうです。いちおうtoが空欄のときはエラーになりそうだったので、そこだけ手当してます。」 つまり、図のコードが正常に動作し、かつ、toが空白になる行においてエラーが発生することは、コメントの6日以前に既知です。「いまだ」と書いておられますが質問には違うエラーが書いていて、そのエラーが事実でないこと、さらに実際に発生しているエラーまで考慮して書いております。 おそらく、何らかのデータの書き込み(こういうと書いてないとか空とか言う質問者様の多いこと)により、スプレッドシートの最終行が4行目以降になっているのでしょう。ご自身のメール2つなので、本来は見出し行を考えても、最終行は3であるべき。それが4まで進んでしまって、4行目には、アドレスがないからエラーが起きている。また、メールは1行ずつ順次送られるので、4行目でアドレスがなくエラーになる手前つまり2行目と3行目については、正常にメールが送られるので、エラーが起きているにもかかわらず、送信結果としては正しい状態になっていると推測できる。 このようなことは、提示されたコードの問題ではなく、シートのデータの問題であって、プログラムに関係のない問題(非推奨質問)です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問