Google Sheets 脚本:从范围内的变量中查找日期

Google Sheets Script: Finding date from variable in a range

这是我第一次尝试脚本。我对 VBA 非常熟悉。我在“日”Sheet 的 A1 中有一个约会。我在“每月”sheet 的 A 列中有一系列日期。我试图找到每月 sheet 的今天日期(从“日”sheet 上的变量)并将数据粘贴到那里。我无法通过查找日期行的第一步。基本上,经理会有一个表格(“Day”Sheet),当他点击保存按钮时,它将在“Monthly”Sheet 上输入数据,然后清除表格。在底部,我显示了执行日志,它为索引显示 -1.0。好像应该说2.0。非常感谢任何帮助!

function moveValuesOnly () {

var ss          = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = ss.getSheetByName("Day");
var reportSheet  = ss.getSheetByName("Monthly");
var todayDate = activeSheet.getRange("A1").getDisplayValue();

var lookupRangeValues = reportSheet.getRange(2,1,32,1).getDisplayValues();

var index = lookupRangeValues.indexOf(todayDate);

/*
//cash on hand
activeSheet.getRange("I2").copyTo(reportSheet.getRange("C" & index),SpreadsheetApp.CopyPasteType.PASTE_VALUES,false);
//POS Readout
activeSheet.getRange("B3").copyTo(reportSheet.getRange("B" & index),SpreadsheetApp.CopyPasteType.PASTE_VALUES,false);
//Waste or free pizza
activeSheet.getRange("B5").copyTo(reportSheet.getRange("N" & index),SpreadsheetApp.CopyPasteType.PASTE_VALUES,false);
//Dough made
activeSheet.getRange("B6").copyTo(reportSheet.getRange("L" & index),SpreadsheetApp.CopyPasteType.PASTE_VALUES,false);
//Total expenses itemized
activeSheet.getRange("A10:G15").copyTo(reportSheet.getRange("I" & index),SpreadsheetApp.CopyPasteType.PASTE_VALUES,false);
*/

Logger.log(todayDate);
Logger.log(lookupRangeValues);
Logger.log(index);

}

10:47:56 PM 通知执行开始
10:47:57 下午信息 6/3
10:47:57 下午信息 [[6/1]、[6/2]、[6/3]、[6/4]、[6/5]、[6/6]、[6/7]、 [6/8]、[6/9]、[6/10]、[6/11]、[6/12]、[6/13]、[6/14]、[6/15]、[6 /16]、[6/17]、[6/18]、[6/19]、[6/20]、[6/21]、[6/22]、[6/23]、[6/24] ], [6/25], [6/26], [6/27], [6/28], [6/29], [6/30], [], []]
10:47:57 PM Info -1.0 //我相信这应该是 2.0?
10:47:58 PM 通知执行完成

-1.0 索引意味着在您的 lookupRangeValues 上找不到 todayDate。这是因为 lookupRangeValues 基本上是一个二维数组,indexOf() 在这里不适用。您应该创建一个循环来查找 todayDate 的 index/row。有了这个,你可以用 indexOf() 替换你的代码行到这个循环:

for(var row in lookupRangeValues){
  if(lookupRangeValues[row][0]==todayDate){
    var index = row;
    break;
  }
}