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

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

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

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

Q&A

解決済

1回答

490閲覧

GASで画像を添付した一斉メールを送信したい

kky

総合スコア1

Google Apps Script

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

0グッド

1クリップ

投稿2023/12/15 10:57

実現したいこと

・Gmailで画像付きの一斉メールを送信したい

前提

初心者です。
GASで画像付きの一斉メールを送信するScriptを書いています。
画像がうまく取り込めません。修正方法を教えてください。

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

画像データが取り込めず、{画像1}に「<img src="cid:img1">」がテキストで表示されてしまいます。
GetBlobが正しく反応していないのだとは思います。

### 該当のソースコード ```GAS function sendMail() { //送信するメールの定義 const senderName = 'xx'; const subject = 'xx'; const DOC_URL = 'https://docs.google.com/xx'; //メールの本文 //使用するスプレッドシートの定義 const spreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const listSheet = spreadSheet.getSheetByName('リスト'); //シートのセル番号を定義 const NAME_COL = 2; //名前の列番号 const MAIL_ADDRESS_COL = 3; //メールアドレスの列番号 const COMPANY_COL = 4; //会社名の列番号 const START_ROW = 2; //for構文で読み込み始める行番号 const listLastRow = listSheet.getLastRow(); const openDoc = DocumentApp.openByUrl(DOC_URL); let wholeText = openDoc.getBody().getText(); //ドライブから画像データを取得 const folder = DriveApp.getFolderById('xx'); let driveImage = DriveApp.getFilesByName('xx').next(); let img1 = driveImage.getBlob(); //メールを送信 for (var i=START_ROW; i<=listLastRow; i++){ const recipient = listSheet.getRange(i,MAIL_ADDRESS_COL).getValue(); const clientName = listSheet.getRange(i,NAME_COL).getValue(); const company = listSheet.getRange(i,COMPANY_COL).getValue(); let body = wholeText.replace("{clientname}",clientName).replace("{company}",company).replace("{画像1}",'<img src="cid:img1">'); MailApp.sendEmail(recipient, subject, body, img1); } }

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

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

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

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

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

kky

2023/12/18 01:33

できました!ありがとうございます!
guest

回答1

0

ベストアンサー

MailApp.sendEmail(recipient, subject, body, img1);
のbodyの引数部分はこちらにあるようにHTMLテキストではなくシンプルテキストを指定します。
HTMLメールで送信する場合は

JAVAScript

1let options = { 2 "htmlBody":body, 3}; 4MailApp.sendEmail(recipient, subject, body, options);

といった感じでオプションにhtmlbodyを入れて送信しなくてはなりません。

それに加えてインラインでの画像送信となると

JAVAScript

1let body = wholeText.replace("{clientname}",clientName).replace("{company}",company).replace("{画像1}",'<img src="cid:img1">'); 2 3let options = { 4 "htmlBody":body, 5 "inlineImages": 6 { 7 img1:img1 8 } 9}; 10MailApp.sendEmail(recipient, subject, body, options);

といった感じで画像に関する設定もオプションに記述する必要があります。

投稿2023/12/15 12:40

YAmaGNZ

総合スコア10542

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問