Google Apps脚本和Google电子表格中的数组存在问题

时间:2013-05-19 19:03:33

标签: javascript google-apps-script google-sheets

好的,问题是如果没有宽度和高度的所有信息,就无法明确地设置范围。如果我有13个细胞,为什么它不会只写13个细胞?所以,这是脚本:

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var targetSheet = ss.getSheetByName("Analytics");
  var entries = [{
    name : "Read Data",
    functionName : "readRows"
  }];
  ss.addMenu("Script Center Menu", entries);
  var rows = targetSheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();
  targetSheet.getRange(1,1,values.length,values[0].length).setValues(values);
  values[1] = readRows();
  rows.setValues(values);
};

readRows()返回值数组。它与appendRow()一起工作,但我找不到覆盖表中第二行的方法,没有任何复杂情况。我尝试了一切。这样它就会一直抱怨不正确的范围高度。其他一些方法甚至将整个数组写入行的每个单元格。我无法理解这件事是如何运作的。这似乎绝对不合逻辑。

我的意思是我正在寻找类似于setRow(2, readRows())的东西,它将获取与数组中的值一样多的单元格,并覆盖之前已经写入的任何内容,如果有的话。

1 个答案:

答案 0 :(得分:0)

好的,找到了答案。它现在看起来像这样:

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var targetSheet = ss.getSheetByName("Analytics");
  var array = [];
  var data = [];
  var entries = [{
    name : "Read Data",
    functionName : "readRows"
  }];
  ss.addMenu("Script Center Menu", entries);
  array = readRows();
  data[0]=array;
  var range = targetSheet.getRange('A2:M2');
  range.setValues(data);
};

诀窍是将数组添加到另一个数组并实现二维数组 - 即使您想要修改单行,setValues()getValues()函数的唯一格式也可以使用。似乎没有更简单的选项,如setArray()或类似的东西。

相关问题