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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

1回答

1435閲覧

gasを使用してメールの一斉送信で資料を添付したい

nakaj1129

総合スコア0

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

1クリップ

投稿2021/10/21 09:44

編集2021/10/21 10:07

前提・実現したいこと

スプレッドシートのリストにgasを使用して添付資料付きのメールを一斉創始したいです。
添付なしでのメール送信までは実装ができていますが、添付資料の反映ができません。

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

Exception: The parameters (String,String,String,(class),DriveApp.File) don't match the method signature for GmailApp.sendEmail.

該当のソースコード

gasを使用

1function sendMail(){ 2 const sheet = SpreadsheetApp.getActiveSheet(); 3 const lastRow = 100; 4 sheet.getLastRow(); 5 const values = sheet.getRange(1, 1, lastRow, 4).getValues(); 6 const doc = DocumentApp.openById('1ny25HJ8W8vNmzGAKN7npY_Ah3kS2G_7iESRQ2SIK9uc'); 7 const docText = doc.getBody().getText(); 8 const subject = 'おすすめ情報'; //メールの件名 9 const senderName = {name: 'デイリースポーツ案内広告社'}; //差出人名 10 for(let i = 1; i < lastRow; i++){ 11 const company = values[i][0]; //会社名 12 const lastName = values[i][1]; //姓 13 const firstName = values[i][2]; //名 14 const mailAddress = values[i][3]; //アドレス 15 const body = docText 16 .replace('{会社名}',company) 17 .replace('{姓}',lastName) 18 .replace('{名}',firstName); 19 20 var tempu = DriveApp.getFilesByName('HPアンケートまとめ.pptx').next() 21 22 GmailApp.sendEmail(mailAddress, subject, body, senderName,attachments:[tempu]); 23 } 24}

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

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

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

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

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

guest

回答1

0

GmailApp.sendEmail(mailAddress, subject, body, senderName,attachments:[tempu]);

なぜこのように引数を渡せると考えたのですか?

メソッドの仕様にしたがって実装しましょう。

sendEmail(recipient, subject, body, options)

(追記)

すみません、上のリンクはMailAppのリファレンスでした。
GmailAppのリファレンスはこちら

sendEmail(recipient, subject, body, options)

いずれにしても、引数の数は(optionsを指定する場合は)4つです。
ファイルを添付したければ、4番目の引数optionsで指定します。
具体例は下記ページがわかりやすいと思います。

Google Apps Scriptから添付ファイル付きメールを送信する方法 | 非IT企業に勤める中年サラリーマンのIT日記

optionsでは添付ファイルの他にもいろいろな指定ができます。
何が指定できるかは上のGmailAppのリファレンスを見てください。

投稿2021/10/21 10:13

編集2021/10/21 15:11
itagagaki

総合スコア8402

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

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

nakaj1129

2021/10/21 14:11

ご回答ありがとうございます! 申し訳ありません、全くの初心者でして・・・メソッドを見ましたが、理解が追いつかず。 つまり下記をどのように修正すると良いのでしょうか。 var tempu = DriveApp.getFilesByName('HPアンケートまとめ.pptx').next() GmailApp.sendEmail(mailAddress, subject, body, senderName,attachments:[tempu]); } } お手数おかけしますが、ご教示いただけますと幸いです。
itagagaki

2021/10/21 15:11

回答に追記しました。
nakaj1129

2021/10/22 01:47 編集

追記ありがとうございます。 ご丁寧に回答いただき、ありがとうございます。 頂いたURL参考に下記コードに書き換えましたが、 const folder = DriveApp.getFolderById('フォルダ名'); //フォルダ名指定 const file = folder.getFilesByName('ファイル名').next(); //ファイル名指定 const options = {attachments:[file]}; GmailApp.sendEmail(mailAddress, subject, body, senderName,options); } 下記エラーが発生してしまいます・・・ Exception: The parameters (String,String,String,(class),(class)) don't match the method signature for GmailApp.sendEmail.
itagagaki

2021/10/22 01:52

ですから、そもそも引数の数から間違っていますよ。 1つ目の引数は何で、2つ目は何で、…ということをちゃんとリファレンスやサンプルコードを見て把握しましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問