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

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

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

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

Q&A

解決済

1回答

1084閲覧

メールの添付画像をスプレッドシートに張り付けるGASの記述、間違いを教えてください

Izumo1101

総合スコア49

Google Apps Script

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

0グッド

0クリップ

投稿2023/04/18 02:33

実現したいこと

ラベル分けされたGmailの本文や添付画像をスプレッドシートに張り付けたい。

前提

メールはスレッド状になっていたり、添付画像は複数(基本は1枚)だったりします。

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

エラーメッセージ エラー Exception: ネットワークの問題または無効な URL のため URL から画像を取得中にエラーが発生しました

該当のソースコード

GAS

1function getMail_new_202304(){ 2 var searchCondition = 'is:unread label:〇〇〇〇〇〇〇〇'; 3 var threads = GmailApp.search(searchCondition, 0, 500); 4 var ss1 = SpreadsheetApp.openById("〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇"); 5 var sh1 = ss1.getSheetByName("シート1"); 6 var row =sh1.getRange(sh1.getMaxRows(), 1).getNextDataCell(SpreadsheetApp.Direction.UP).getRow() +1; 7 8 for(const thread of threads){ 9 const messages = thread.getMessages(); 10 for(var i=0; i<messages.length; i++){ 11 const message = messages[i]; 12 const mailBody = message.getPlainBody(); 13 const mailFrom = message.getFrom(); 14 const date = message.getDate(); 15 16 sh1.getRange(row,1).setValue(mailFrom); 17 sh1.getRange(row,2).setValue(date); 18 sh1.getRange(row,3).setValue(mailBody); 19 20 21 22 23 const attachments = messages[i].getAttachments(); 24 var blob; 25 26 for(const attachment of attachments){ 27 console.log(attachment.copyBlob()); 28 blob = attachment.copyBlob(); 29 //base64に変換 30 var c_type = blob.getContentType(); 31 var base64 = Utilities.base64Encode(blob.getBytes()); 32 var data = "data:" + c_type + ";base64, " + base64; 33 //セルイメージを貼り付ける 34 var image = SpreadsheetApp.newCellImage() 35 .setSourceUrl(data) 36 .setAltTextTitle("添付画像") 37 .setAltTextDescription("報告画像") 38 .build();    39 } 40 sh1.getRange(row,4).setValue(image); 41 // messages[i].markRead(); 42 row++; 43 } 44 } 45} 46

お願い

どこの部分が間違いか、またはそもそも大きな間違いを犯しているなど、具体的に教えていただけると助かります。
〇部分をテスト環境に置き換えると送信元や受信日時、本文は取得でき、添付画像のみうまくいきません。
よろしくお願いします。

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

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

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

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

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

YellowGreen

2023/04/18 04:15 編集

追試してみましたが、 添付画像(1MB未満のJPEG画像, 4MB程度のHEIF写真それぞれ1メールに1つ)はセルに挿入されました。 (追記、複数の画像添付でも正常に2行にわたってメールデータと画像がそれぞれ1行ずつ挿入されました。) ごめんなさい。勘違いでした。複数の画像添付では、最後の画像のみがセルに挿入されていました。 エンコードは2回行われますが、imageを上書きしているのですね。
Izumo1101

2023/04/18 04:15

ありがとうございます。貴殿の環境下でうまくいったとのことで、まさかのスプレッドシートそのものの不具合を疑い、新規シートで走らせたところうまくいきました。原因不明ですが解決しましたのでお礼とさせていただきます。
YellowGreen

2023/04/18 04:17

解決のお役に立ってよかったです。
guest

回答1

0

自己解決

ありがとうございます。コメントの方の環境下でうまくいったとのことで、まさかのスプレッドシートそのものの不具合を疑い、新規シートで走らせたところうまくいきました。原因不明ですが解決しましたのでクローズとさせていただきます。

投稿2023/04/18 04:16

Izumo1101

総合スコア49

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問