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

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

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

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

Q&A

解決済

1回答

2117閲覧

GAS 添付ファイル名を1つ取得

takFF

総合スコア14

Google Apps Script

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

0グッド

0クリップ

投稿2021/02/23 13:25

GASでGmailの添付ファイル名(1つ目だけでよい)を、取得して、Google sheetに転記したいのですがどうすればよいでしょうか。取得するところができません。

var attachmentA = message.getAttachments(); var attachmentAname = attachmentA.getName();

これだとうまくいきません。
他の部分(本文とかタイトルとか、は問題なく取得、転記できてきます)
添付ファイルのデータは特に不要です
(いまのところ)

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

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

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

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

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

guest

回答1

0

ベストアンサー

getAttachments() で取得しているのは配列なので、1つ目だけでよいなら以下で動くと思います。

var attachmentAname = attachmentA[0].getName();

追記

添付ファイルがないメールが存在する場合は、 if(attachments.length) で処理を分岐させると良いです。

投稿2021/02/24 01:11

編集2021/02/25 04:31
sawa

総合スコア3002

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

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

takFF

2021/02/24 12:38

ありがとうございます。しかしやってみましたが、うまくいきません。 あと、これは各メッセージ(スレッドではなく)に対して、アタッチメントを取得しにいく形でよいのですよね? ーーーーーーーーーーー function myFunctionMarkSelection() { // 検索条件に該当するスレッド一覧を取得 var threads = GmailApp.search('label:starred has:attachment'); //-label:対応完了 // スレッドを一つずつ取り出す threads.forEach(function(thread) { var threadid = thread.getId(); // thread ID get // スレッド内のメール一覧を取得 var messages = thread.getMessages(); // メールを一つずつ取り出す messages.forEach(function(message) { var messageid1 = message.getId() ; //message ID get var sender1 = message.getFrom() ;// var to1 = message.getTo() ;// var cc1 = message.getCc() ;// var subject1 = message.getSubject() ;// var date1 = message.getDate();// // メール本文を取得 var plainBody = message.getPlainBody(); var starred1 = message.isStarred(); var attachments = message.getAttachments(); console.log(attachments) var attachment0name = attachments[0].getName();//←これやりましたが、だめなようです、ここの[0]のところでエラーになります。 ------------------------
sawa

2021/02/24 13:21 編集

たぶん 添付ファイルがないメールに対して 実行してエラーになっているんだと思います。 has:attachment を条件に検索しても、添付のついたメッセージを含むスレッドが返ってくるので、そのスレッドの中には添付がないメッセージが存在するんじゃないでしょうか? 取得してる件名や日時をログに吐き出せば、どのメールでエラーとなってるか見つかると思います。
takFF

2021/02/25 03:20

ありがとうございます。私もそうだと思います。 それで、メッセージごと、添付ファイル有無でわけて、if文を作ったりしてみましたが、やはりうまくいきません。if文を見直してみます。
sawa

2021/02/25 04:32

添付ファイルが無いメールをどう処理するのかわからないので、とりあえずifの条件のところだけ回答に追記しました。
takFF

2021/02/25 15:23

ありがとうございます! とりあえず、 以下でうまくいきました ーーーーーーーーーーーー if (attachments[0] == null){ var attachment0name = 'none'; // }  else{ var attachment0name = attachments[0].getName(); }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問