繁体   English   中英

Email 来自 Google Apps Scripts 的过滤结果

[英]Email the filter results from Google Apps Scripts

我有以下 function (顺便说一句,我是 Google Apps 脚本的新手)。

function testing(){
  let thisSpreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(thirtyMinuteWorksheet).getDataRange().getValues()

  let filterData = thisSpreadsheet.filter(function (row,index) {
      return row[11] >= 30
  });


if(filterData.length > 0){
      MailApp.sendEmail({
      to: 'email@gmail.com',
      subject: 'test',
      body: filterData,
      noReply: true
      });
  }

过滤器数据过滤工作表并返回与逻辑匹配的所有行。 我希望能够 email 这些行。 如果我运行它,我会得到 email 。 (加上更多,为简单起见缩短它)。

{10=[Ljava.lang.Object;@7f7f43f6, 179=[Ljava.lang.Object;@d387470, 
83=[Ljava.lang.Object;@5daa185f, 54=[Ljava.lang.Object;@39ca2a17, }

我可以看到这是一个 object 但我在他们的 API 上找不到任何东西,这为我指明了如何将这个结果转换为实际值的正确方向

ps

是的,如果我 console.log filterData 我确实得到了正确的对象。 有任何想法吗?

我想出了一个办法,因为这是一个对象数组,我只是将其转换为 HTML function。 如下。

我传入了我的数组结果并添加了一些标题。

function makeTableHTML(myArray,tableHeaders) {
    let result = "<table border=1>";
    result += "<tr>";
        for(var j=0; j<tableHeaders.length; j++){
            result += "<td>"+tableHeaders[j]+"</td>";
        }
        result += "</tr>";
    for(var i=0; i<myArray.length; i++) {
        result += "<tr>";
        for(var j=0; j<myArray[i].length; j++){
            result += "<td>"+myArray[i][j]+"</td>";
        }
        result += "</tr>";
    }
    result += "</table>";

    return result;
}

这给了我一种将返回结果添加到来自 Google Scripts 的发送邮件 function 的方法。

您可以尝试使用join代替,因为您发送的数据是一个数组。 将其转换为字符串以正确显示数据。

样本数据:

样本数据

代码:

  let filterData = thisSpreadsheet.filter(function (row, index) {
    return row[11] >= 30;
  });

  // Preprocesses filterData before sending mail
  filterData.forEach(function (row, index) {
    filterData[index] = filterData[index].join(",");
  });
  filterData = filterData.join("\n");


  if (filterData.length > 0) {
    MailApp.sendEmail({
      to: 'email@gmail.com',
      subject: 'test',
      body: filterData,
      noReply: true
    });
  }

样品 output:

样本输出

一个快速的答案是尝试使用JSON.stringify()包装filterData ,但您无法修改它在邮件中的显示方式。

代码:

body: JSON.stringify(filterData),

样品 output:

样本输出2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM