2013-05-19 192 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()或類似的簡單選項。

相關問題