Google Apps 脚本如何搜索工作表列以匹配电子邮件正文中的文本

问题描述 投票:0回答:1

我正在尝试搜索工作表中的列以查找其数据也包含在电子邮件正文中的单元格。

我已将 Google 表单提交的时间戳以及提交的其他详细信息放入电子邮件正文中。然后,我想搜索工作表上的时间戳列,以查找电子邮件正文中现在包含的具有匹配时间戳的单元格,并返回行号。

这是我到目前为止所拥有的:

function updateSheetC() {
  //GMAIL QUERY
  const q = GmailApp.search('label:ProcessesTEST');

  const num = q[0].getMessageCount();
  const approvedeny = q[0].getMessages()[num - 1].getPlainBody();



  //SHEET INFO
  const id = '1FEP50qGUJcS6FJJkcPwX1cclrnOJ5Y6iRjKOkzoWc4A';
  const spreadsheet = SpreadsheetApp.openById(id);
  const sheet_apprdeny = spreadsheet.getSheetByName('Form Responses 1');
google-apps-script google-sheets gmail
1个回答
0
投票

在时间戳列中查找包含在搜索返回的电子邮件正文中的行。

function updateSheetC() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Sheet0");
  const hr = 1
  const sr = 2;
  sh.getRange(hr,1,1,sh.getLastColumn()).getDisplayValues().flat();
  const col = hs.reduce((a,h,i) {a[h] = i + 1;return a},{});
  vs = sh.getRange(sr,col["TimeStamp"],sh.getLastRow() - sr + 1).getDisplayValues().flat();
  const ts = GmailApp.search('label:ProcessesTEST');
  let matches = [];
  const num = ts.forEach(t => {
    let ms = t.getMessages();
    ms.forEach(m => {
      vs.forEach((ts,i) => {
        if(m.getPlainBody().includes(ts)) {
          matches.push(i + sr);
        }
      });
    });
  });
  Logger.log(matches.join(","))
  return matches;
}
© www.soinside.com 2019 - 2024. All rights reserved.