我正在从工作表中读取数据数组,更新元素,然后使用setValues插回-没运气。 简单地读取数组,然后立即使用setValues来设置读取的数据,而不进行任何更改都会导致相同的问题
我尝试调试呼叫,将数据输出到记录器以检查明显的问题。取消设置值的行将停止错误。
function GrabTimes(){
var RailSheet = SpreadsheetApp.getActive().getSheetByName('D160 Rail Serials');
var MaxRows = RailSheet.getMaxRows();
var MaxColumns = RailSheet.getMaxColumns();
var GrabData = RailSheet.getRange(1, 1, MaxRows, MaxColumns);
//var GrabDataValues = GrabData.getValues();
Logger.log(MaxColumns);
var GrabDataValues = RailSheet.getDataRange().getValues();
GrabData.setValues(GrabDataValues);
/*
for (var n=0;n<MaxRows;n++){
var StartTimeValue=GrabDataValues[n][20];
var EndTimeValue=GrabDataValues[n][21];
if (GrabDataValues[n][1]=="TRUE" && StartTimeValue==""){
GrabDataValues[n][20]=new Date();
}
if (GrabDataValues[n][18]=="TRUE" && StartTimeValue==""){
GrabDataValues[n][21]=new Date();
}
}
*/
}
我希望代码可以简单地获取数据,然后至少不做任何更改就可以将其设置回去? 我希望错误消息突出显示错误的行,尽管它只是报告“操作员初始错误”。仅通过反复试验,我就设法找出了标记问题的线。
答案 0 :(得分:2)
尝试使用RailSheet.getDataRange().getValues()
,它将获取工作表上的所有数据。
作为测试,请尝试以下操作:
function GrabTimes(){
var RailSheet = SpreadsheetApp.getActive().getSheetByName('D160 Rail Serials');
var targetSheet = SpreadsheetApp.getActive().getSheetByName('target');
var GrabData = RailSheet.getDataRange().getValues();
targetSheet.getRange(1,1,GrabData.length,GrabData[0].length).setValues(GrabData);
}