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

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

ただいまの
回答率

90.11%

GASでウェブから取得した画像を埋め込みメール送信したい

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,260

somsom

score 7

前提・実現したいこと

Google Apps Scriptにてバーコードの画像を埋め込んだメールを
自動返信したいと考えております。

想定される処理は以下です。

①フォームから会員情報を入力
②スプレッドシートに結果を出力し、会員番号を生成
③会員番号をもとに、インターネットのサービスでバーコードを生成
④生成されたバーコードを画像埋め込みして、メールで自動返信する

バーコードの生成は以下のサイトを利用する想定です
Free Online Barcode Generator: Make a Custom Barcode in Seconds
https://www.barcodesinc.com/generator/index.php

http://www.barcodesinc.com/generator/image.php?code=" & (バーコードにしたい数値) & "&style=68&type=C128B&width=245&height=50&xres=1&font=3
参考:https://qiita.com/3mc/items/876125e40d70ad5a6ea3

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

画像埋め込みのため、inlineImagesを利用しても画像が表示されません

該当のソースコード

var bacode = sheet.getRange("A1").getValue();
var image = UrlFetchApp.fetch("https://www.barcodesinc.com/generator_files/image.php?code="+bacode+"&style=68&type=C128B&width=1000&height=200&xres=2&font=3").getBlob()
var title = "会員証"; 
var body
= "ご登録ありがとうございました。\n"
+"お買い上げ時に下記の会員証をご提示ください。\n"
+ "会員番号は【" +bacode+ "】です。\n\n";
+ "------------------------------------------------------------\n";
var footer
= "------------------------------------------------------------\n\n"
+ "ご不明な点はお問い合わせください。";

Logger.log(image)

var name = '氏名';
var mail = 'メールアドレス';
var address = "";

var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getLastRow();
var cols = 7;
var rg = sheet.getDataRange();
Logger.log("rows="+rows+" cols="+cols);

for (var i = 1; i <= cols; i++ ) {
var col_name = rg.getCell(1, i).getValue(); 
var col_value = rg.getCell(rows, i).getValue(); 
body += "■"+col_name+"\n";
body += col_value + "\n\n";
if ( col_name === name ) {
body = col_value+" 様\n\n"+body;
}
if ( col_name === mail ) {
address = col_value;
}
}
body += footer;

//GmailApp.sendEmail(address,title,body);
GmailApp.sendEmail(address, title, body, {
name: address,
htmlbody: title,
inLineImages: image
})
}

試したこと

画像挿入について記載してある下記ページを参照しましたが、依然解決しない状況です。

https://qiita.com/mistolteen/items/404c10657b1b27007a3c
https://qiita.com/t114/items/6f4e4399c8dd3699c373

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

お手数ですが、ご対応お願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+3

これでいけました。

function myFunction() {
  var image = UrlFetchApp.fetch("https://www.barcodesinc.com/generator_files/image.php?code=hello&style=68&type=C128B&width=1000&height=200&xres=2&font=3");

  MailApp.sendEmail({
   to: '<メールアドレス>',
    subject: '画像',
    htmlBody: '<img src="cid:test"><br/>',
    inlineImages: {
    test: image.getBlob().getAs('image/png'),
  }})
}


getBlob()だけだと謎のphpファイルがメールに添付されたいたのでgetAs関数も付加してみました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

回答ありがとうございます。画像で表示されました。ありがとうございました。
追加のご質問で恐縮ですが、本文の 変数bodyを表示するにはどうすれば良いでしょうか?htmlBody の項目に変数を入れ込む形になりますでしょうか?
よろしくお願いたします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/26 03:42

    これでうまく動作しますか?
    MailApp.sendEmail({
    to: '<メールアドレス>',
    subject: '画像',
    htmlBody: body + '<img src="cid:test">',
    inlineImages: {
    test: image.getBlob().getAs('image/png'),
    }})

    キャンセル

  • 2018/12/29 03:25

    ありがとうございました。body の内容をhtml形式に修正することで、うまく表示できました。
    大変助かりました。

    キャンセル

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

  • ただいまの回答率 90.11%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる