我正在研究一个脚本来自动执行每日复制+粘贴(作为值)功能。我已经逐步研究了它,最后一个问题是循环的if语句,该语句查看相对于当前日期的日期。
您可以看到B列是我的“日期”列,而在第1行AN中,我输入了today()函数。
基本上,每天我都会复制并粘贴(作为值)与“今天”日期匹配的任何行(列I-AM),将其突出显示为灰色,然后隐藏这些行。一旦可以为循环设置if语句以识别正确的行,就可以在早晨设置每日触发器以运行该函数。
下面是代码-非常感谢所有帮助!
function dailyUpdate()
{
var sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Copy of Results');
var dateValues = sht.getRange(2,2,1231).getValues();
for (r=1; r<1232; r++)
var todayValue = sht.getRange(1,39).getValue();
var dateValues = sht.getRange(r,2).getValues();
if(dateValues == todayValue)
{
var source = sht.getRange(r,9,1,31);
source.copyTo(sht.getRange(r,9,1,31), {contentsOnly: true});
sht.hideRow(source)
source.setBackground("grey");
}
}
答案 0 :(得分:0)
您正在比较sht.getRange(1,39).getValue()
和sht.getRange(r,2).getValues()
。 getValue()
返回一个值,而getValues()
返回一个2D数组。
而且由于您在工作表中使用公式,请尝试使用getDisplayValue()
而不是getValues()
。
尝试这样的事情:
function dailyUpdate() {
var sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Copy of Results');
var todayValue = sht.getRange(1,39).getDisplayValue();
for (r=1; r<1232; r++) {
var dateValue = sht.getRange(r,2).getDisplayValue();
if(dateValue == todayValue) {
var source = sht.getRange(r,9,1,31);
source.copyTo(sht.getRange(r,9,1,31), {contentsOnly: true});
sht.hideRow(source)
source.setBackground("grey");
}
}
}