使用变量,范围的坐标或尺寸无效

时间:2015-03-01 23:34:18

标签: google-apps-script google-sheets

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

3 个答案:

答案 0 :(得分:4)

您指定0列,将其更改为1或更多。另外,你想在循环中使用getRange完成什么?这主要是一个糟糕的决定,很少是必不可少的。

答案 1 :(得分:2)

我在传递0值作为GetRange中的列时遇到了这个问题。经过一些测试后,我确定传递给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);

before the code after the code

在日志中,记录了row的值:

[18-10-30 04:29:57:257 PDT] Row: 1

因此,在我的情况下,如果要访问A2处的单元格,则必须调用getRange(2,1,1,1);

答案 2 :(得分:0)

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);
}