2013-05-19 197 views
0

好的,问题在于如果没有关于宽度和高度的所有信息,没有办法明确设置范围。如果我有13个电池,为什么不写13个电池呢?所以,这里是脚本:Google Apps脚本和Google电子表格中的数组问题

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

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

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()或类似的简单选项。

相关问题