重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

var SearchString = "label:mitsubishi";

function myFunction() {
var myThreads = GmailApp.search(SearchString);
var myMsgs = GmailApp.getMessagesForThreads(myThreads); for ( var threadIndex = 0 ; threadIndex < myThreads.length ;threadIndex++) {
// メールから data と Start, End を抜き出す
var mailBody = myMsgs[threadIndex][0].getPlainBody();

// 正規表現マッチにより、メール本文から情報を抽出する。
var data = mailBody.match(/お名前 :.*/);

// シートへ値を追加する:getActive()を使って Spreadsheet への依存性を下げたコード
// Spreadsheet の Apps Script として書く場合はこれでよい
var objSheet = SpreadsheetApp.getActive().getSheetByName("mitsubishiname");

// 指定されたシートの1行目は見出し行とし、最新のデータを常に2行目に表示させたいので、1行目の後ろ(2行目)に空行を差し込む。
objSheet.insertRowAfter(1);

// 抽出した情報は A2 セルに書き込む。
objSheet.getRange("A2").setValue(data[0]);

}
}

これがうまく動きません。
Gmailからラベルを指定して、その中の指定した正規表記に合う文字列を羅列するというものなのですが、実行してもforの繰り返しが起きません。
わかる方教えていただきたいです。

A 回答 (1件)

こんにちは



GASはまったく知りませんが、以下をざっと見たところ・・・
https://developers.google.com/apps-script/refere …

>for ( var threadIndex = 0 ; threadIndex < myThreads.length ;threadIndex++) {
の繰り返しは、ご質問の雰囲気からすると、各messageをチェックしたいのでしょうから、myThreadsではなく、myMsgsではないのでしょうか?

さらにその後の、
>myMsgs[threadIndex][0].getPlainBody();
も繰り返しのインデックスとは内容的に合っていないようですし、myMsgs はGmailMessageクラスの値を格納した単純配列ではないかと推測しますので、二次元配列の扱いにした時点でエラーになりませんか?
https://developers.google.com/apps-script/refere …

それ以下はシートの扱いに関する記述なので、追いかけてはいませんが、上記のようなエラー表示が出ていないのでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!