2013-07-18 208 views
0

在谷歌電子表格中想回到公式減去另一個基於值一個單元格在另一個單元。在谷歌腳本

例如:

If cell A1 = "Yes" 
    subtract B1 from C1 

If cell A1 = "No" 
    subtract B1 from D1 

If cell A1 = "" 
    subtract B1 from C1 

我認爲必須建立一個腳本這一個(不知道),並想出了這一點:

function sub() { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sh = ss.getActiveSheet(); 

    var nRange = ss.getRangeByName("sub"); 
    var group = nRange.getValues();; 

    var range; 

    if (group == "Yes") { 
    range = '=Q15-N15' } 
    else if (group == "No") { 
    range = "=Q15-M15"} 
    else if (group == "") { 
    range = "=Q15-M15"} 

    return range 
    } 

現在它返回適當的範圍內,但公式不會生效。該腳本直接在單元格中粘貼範圍。

回答

0

如果使用.getValues()讀取範圍的內容,您將收到值的二維數組 - 即使只有一個距離單元。如果您確實只需要一個值,請改爲使用.getValue()

因爲你得到一個數組,所有你的三個if測試評估,以false,並沒有爲range設置的值。先給range默認值來啓動:

var range = 'Range not set'; 

注:Custom functions回報,他們不能設置單元格的公式。你的函數可以返回一個計算結果,或一行文本顯示在單元格中。如果你必須設置一個公式,你必須這樣做使用的調用的其他方式的功能,並使用Range.setFormula()