GASで取得したGmailから特定の文字列と一致した場合スプレッドシートに追加する方法
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関数を使用することで文言別にシートに貼り付ける内容変えたりと幅広く対応できます。