使用变量时,范围的坐标或维度无效



使用以下函数将日期输出转换为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);
}

最新更新