我尝试构建一个脚本,但存在一些问题。表格格式为两列,即日期和值。这些是需求:
理想状态
- 抓住 Google 表格中名为“test”的最后一个填充行(今天的日期)。
- 如果 F 列中的值大于 0.5,请检查该行。
- 如果大于 0.5,则触发电子邮件。
- 在电子邮件正文中,应注明“结果于[日期]找到”。
这是我的出发点,但它并没有产生我想要的东西。这些是问题:
当前状态
1.脚本抓取过去F列大于0.5的每一行。我只想检查今天(这将是最后一行)。它不应该回顾过去的一切。
2.电子邮件正文指出:在[行号]上找到结果”。这没有任何意义。我希望显示日期,而不是行号。
这是当前的代码。请帮忙。
function readCell() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("test");
var values = sheet.getRange("F3:F").getValues(); //this has the values
var date = sheet.getRange("D3:D").getValues(); // this has the date
var results = [];
for(var i=0;i<values.length;i++){
if(values[i]>=0.5)
{
results.push("Result found on:" +(i+3));
}
}
MailApp.sendEmail('[email protected] /cdn-cgi/l/email-protection', 'Alert', results.join("\n"));
};
此上下文中的最后一行是第 217 行,而不是第 218 行,假设sheet.getLastRow() 会忽略#DIV/o!价值观。请参阅屏幕截图。
最新更新
当前错误与“toDateString”相关。我认为这可能与我的 Google Sheet 落后一天有关。所以,今天是 1 月 10 日,我的 Google 表格中的最后一行是 1 月 9 日。我认为这就是错误发生的原因。你可否确认?那么,如何将其更改为today-1天呢?
See below.
检查最后一行的方法如下:
function readCell() {
var sheet = SpreadsheetApp.getActive().getSheetByName('test');
var lastRow = sheet.getLastRow();
var value = sheet.getRange('F' + lastRow).getValue();
var date = sheet.getRange('D' + lastRow).getValue();
if (value >= 0.5) {
var result = 'Result found on: ' + date;
MailApp.sendEmail('[email protected] /cdn-cgi/l/email-protection', 'Alert', result);
}
};
看到您的数据后,我认为下面的代码更适合您。
function readCell() {
var sheet = SpreadsheetApp.getActive().getSheetByName('test');
var dates = sheet.getRange('D1:D').getValues();
var date = null;
var dateRow = 0;
var dateCount = dates.length;
var yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
var yesterdayString = yesterday.toDateString();
for (dateRow; dateRow < dateCount; ++dateCount) {
date = dates[dateRow];
if (date instanceof Date) {
date = date.toDateString();
if (date === yesterdayString) {
++dateRow;
// To account for zero-based array
break;
}
}
}
var value = sheet.getRange('F' + dateRow).getValue();
if (value >= 0.5) {
var result = 'Result found on: ' + date;
MailApp.sendEmail('[email protected] /cdn-cgi/l/email-protection', 'Alert', result);
}
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)