使用以下函数将日期输出转换为Unix时间戳,但我收到以下错误:
范围的坐标或维度无效。(第9行,文件"DateConversion")
代码:
function convertDates(){
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var values = rows.getValues();
for(n=0;n<values.length;++n){
var cell = values[n][0];
var cellNew = cell.replace("at ", " ");
//SpreadsheetApp.getUi().alert(cellNew);
SpreadsheetApp.getActiveSheet().getRange(Number(n), 0)
}
}
如果指定了0列,请将其更改为1或更多。另外,在循环中使用getRange试图实现什么?这大多是一个糟糕的决定,很少是必要的。
我在GetRange中传递0值作为列时遇到了这个问题。经过一些测试,我确信您传递给getRange的行和列值从1开始,而不是从0开始。
这是我的测试代码:
var row = sheet.getDataRange().getLastRow();
Logger.log("Row: " + row);
var col = 0;
var range = sheet.getRange(row+1, col+1, 1, 1);
range.setValue(0);
在代码之前代码之后
在日志中,记录行的值:
[18-10-30 04:29:57:257 PDT] Row: 1
所以在我的情况下,如果你想访问A2的单元格,你必须调用getRange(2,1,1,1);
function convertDates() {
var s = SpreadsheetApp.getActiveSheet();
var startRow = 2; // row number where dates begin
var lastRow = s.getLastRow();
var datesR = s.getRange(startRow, 1, lastRow - startRow +1);
var dates = datesR.getValues();
for(n = 0; n < dates.length; n++ ) {
dates[n][0] = dates[n][0].toString().replace("at ", " ");
}
// replace dates with revised array
datesR.setValues(dates);
}