ishi14
@ishi14

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【GAS】Googleフォームの自動返信にインラインで画像を挿入する方法

解決したいこと

Googleフォームでイベント参加者登録用の申込フォームを作成しています。
簡易的にフォームが正しいものかを確認するために自動返信メールにインラインで所定の画像を挿入したいです。
素人質問で申し訳ありません。

発生している問題・エラー

  • 一般的な自動返信メールに画像を「添付」することはできた。
  • しかしながら、HTMLメールにして画像をインラインに挿入することができていません。

現在のソースコード

function sendHTMLmail() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var row = sheet.getLastRow();
  var mail = sheet.getRange(row, 2).getValue();
  var name = sheet.getRange(row, 3).getValue();
  var shozoku = sheet.getRange(row, 4).getValue();
  var ankenmei = sheet.getRange(row, 5).getValue();
  var date = sheet.getRange(row, 6).getValue();
  var number  = sheet.getRange(row, 7).getValue();

  //メールの件名を記述する
  var subject = '【重要】イベントフォーム(自動返信)';//メールの「件名」

  //Googleドライブから画像イメージを取得する
  var ImgA = DriveApp.getFileById("画像ID").getBlob();

  // 自動返信メール本文
  var body = name + '\n' +
    '\n' +
    '下記の内容で申し込みを受付いたしました。\n' +
    '\n' +
    '【氏名】\n' +
    name + '\n' + 
    '\n' +
    '【メールアドレス】\n' +
    mail + '\n' +  
    '\n' +
    '【 所属】\n' +
    shozoku + '\n' +  
    '\n' +
    '【案件名】\n' +
    ankenmei + '\n' +  
    '\n' +
    '【予定日】\n' +
    date + '\n' +  
    '\n' +
    '【予定者数】\n' +
    number + '\n' +  
    '\n' +
    '注意事項|\n' +
    '・本案内は~~~~~\n' +
    '・本案内は~~~~~\n' +
    '・本案内は~~~~~\n' +
    '・本案内は~~~~~\n' +
    '\n' ;

  //オプションでHTMLメール本文を設定する
  var options = {
  "inlineImages":{ImgA}
  };

  //MailAppで宛先、件名、本文、添付ファイルを引数にしてメールを送付
  MailApp.sendEmail(mail,subject,body,options);
}

理想の返信メールのイメージ

――――――――――――――――――――――――――――

[ 指定した画像が表示 ]

◇ 様

以下の内容で申し込みを受付いたしました。

【氏名】
申込者のお名前

【メールアドレス】
申込者のメールアドレス

(以下に続く)

――――――――――――――――――――――――――――

自分で試したこと

以下の記事などを参照していますが、まるっきり同じようなことをやろうとしている方を見つけられておらず、解決に至っていません。

いつも皆さんに助けていただくばかりで申し訳ありません。
完成した際には情報を整理して共有したいと思います。

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

0

1Answer

そもそもPlainTextでインライン画像が送れるのかはわかりませんが、
載せている記事の2つ目にあるように、inlineImagesを利用するのであれば、
HTMLを利用するのが前提となります

公式ドキュメント

a JavaScript object containing a mapping from image key (String) to image data (BlobSource); this assumes that the htmlBody parameter is used and contains references to these images in the format

なので例えば下記のようにinlineImagesを指定するのであれば

  var options = {
  "inlineImages":{ImgA}
  };
<img src="cid:ImgA" />

として利用することが前提となります。

正直内容的にもHTML Serviceを利用して、HTMLから文面を生成して送付した方が良いかなと思いました。

0Like

Comments

  1. @ishi14

    Questioner

    @sinsky さま
    この度はコメントありがとうございます。
    少し別の方法で対応ができないか考えてみます。

Your answer might help someone💌