2014-09-30 61 views
0

請考慮下面的代碼:它設置值然後在一個範圍內設置函數,但是它會覆蓋設置的值。setFormulas不會跳過空數組元素,覆蓋值

function test() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var range = ss.getRange("A1:B2"); 
    var values = [["First","row"],["Second","row"]]; 
    var formulas = [["=42",""],["","=77"]]; 
    range.setValues(values); 
    range.setFormulas(formulas); 
} 

爲什麼設置一個空公式會覆蓋任何設置值,反之亦然?想知道是否有辦法跳過設置單個數組元素。我試過'未定義'和'null,沒有運氣。

必須獲取需要公式以避免覆蓋數據的值的特定區域的範圍會爲我正在編寫的腳本增加額外的圖層複雜度。

感謝您的閱讀!

回答

2

我認爲這個問題可以通過setValues()可以用來設置公式的事實大大緩解。

var range = ss.getRange("A1:B2"); 
    var values = range.getValues(); 

    // process the array, eg values[0][0] = "=42"; 

    range.setValues(); 
0

這無疑解釋了爲什麼設定值改寫公式,但如果有一種方法來getValuesandFormulas在一起成一個陣列,那豈不是更好?

如果(像我一樣)你分散到getValues和getFormulas,意識到你可以使用copyTo範圍來複制整個內容!