好的,问题是如果没有宽度和高度的所有信息,就无法明确地设置范围。如果我有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())
的东西,它将获取与数组中的值一样多的单元格,并覆盖之前已经写入的任何内容,如果有的话。
答案 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()
或类似的东西。