実現したいこと
- Google Apps Scriptを使ってGmailのメール情報をスプレッドシートに書き出す機能を動作するようにしたいです。スプレッドシートに反映させるようにしたいです。
前提
Google Apps Scriptを使ってGmailのメール情報をスプレッドシートに書き出す機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
エラーメッセージ TypeError: Cannot read properties of undefined (reading 'length') myFunction @ 無題.gs:51
該当のソースコード
ソースコード function myFunction() { //結果記載用の配列を宣言 var values = []; //検索クエリを生成 var date = new Date(); date.setMonth(date.getMonth()-1); //今日から1か月前の日付 date = Utilities.formatDate(date, "Asia/Tokyo", "yyyy/MM/dd"); var query = "label:google after:" + date; //条件に当てはまる全スレッドを取得 var threads = GmailApp.search("label:2年生-2年生-前期-"); //各スレッド情報を取得 threads.forEach(function(thread){ //スレッド内の全メッセージを取得 var messages = thread.getMessages(); //各メッセージ情報を取得 messages.forEach(function(message){ var getTime = message.getDate(); var from = message.getFrom(); var to = message.getTo(); var cc = message.getCc(); var bcc = message.getBcc(); var subject = message.getSubject(); var plainBody = message.getPlainBody(); //getBody()を使うとHTML形式で本文取得できる var read = message.isUnread(); if(read == true){ read = "未読"; } else { read = "既読"; } values.push([getTime,from,to,cc,bcc,subject,plainBody,read]); }); }); //スプレッドシートに結果を記載 var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); sheet.getRange(2,1,values.length,values[0].length).setValues(values); }
試したこと
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
検索対象のメールがないのでvaluesが空になっていて、
values[0].lengthを取得できていないと思われます。
検索条件の
label:2年生-2年生-前期-
をスクリプトからコピペして
ブラウザで手動検索してみてください。
空白、数字やハイフンの半角、全角など
何か実際のラベルと違いがありませんか。
実際のラベルが
2年生-前期-
で
2年生-2年生-前期-
ではないとか?
あなたの回答
tips
プレビュー