JavaScriptについての記事

GASで取得したGmailから特定の文字列と一致した場合スプレッドシートに追加する方法

GASで特定の文字列と一致した場合スプレッドシートに追加する方法

GASで取得したメール件名や本文などを特定の文字列で一致する場合のみシートに貼り付ける方法を紹介します。

特定の文字列を含む場合貼り付けたい時ってありますよね。

以前書いた記事を「GASを使ってGmailから複数のメール件名を検索してスプレッドシートに貼り付ける方法!」をカスタマイズして追加してます。

GASで特定の文字列と一致した場合スプレッドシートに追加するコード

const nameArray = ['件名01','件名02','件名03','件名04','件名05'];
const mailTitle = [];

const dt = new Date();
dt.setDate(dt.getDate()-7);
const d7 = Utilities.formatDate(dt, 'Asia/Tokyo', 'yyyy/M/d');
const day = `after:${d7}`;

const newnameArray = nameArray.map(function(name){
    name =  `${day} subject:${name}`;
    return name;
});

for( let i= 0; i < newnameArray.length; i++) {

    let gmail = GmailApp.search(newnameArray[i]);

    for(let gmailItem of gmail){
      let threads = gmailItem;
      let mails = threads.getMessages();

      for(let i = 0; i < mails.length; i++){
        let mail = mails[i];
        let subject = mail.getSubject();
        mailTitle.push(subject);
      }
    }
}

const sheet = SpreadsheetApp.getActive().getActiveSheet();

let paste = sheet.getRange("A:A").getValues();
let pasteLastRow = paste.filter(String).length + 1;

for(let i = 0; i<mailTitle.length; i++) {
    if(mailTitle[i].match(/一致させたい文字列/)){
        sheet.getRange(paste,1).setValue(mailTitle[i]);
        paste++;
    } 
}

ポイントはmatch関数で文字列を判別する

for(let i = 0; i<mailTitle.length; i++) {
    if(mailTitle[i].match(/一致させたい文字列/)){
        sheet.getRange(paste,1).setValue(mailTitle[i]);
        paste++;
    } 
}

match関数を使用して一致させたい文字列のみに限定します。
以上がGASで特定の文字列と一致した場合スプレッドシートに追加する方法です。

else等を使っていけば幅広く対応できます。

おわり

match関数を使用することで文言別にシートに貼り付ける内容変えたりと幅広く対応できます。