2015-08-26 53 views
1

我在學習如何使用Google電子表格中的單元格處理Google腳本。我瞭解到,Google腳本setValue

自定義函數返回值,但它們不能在它們所在的單元格外設置值。在大多數情況下,單元格A1中的自定義函數不能修改單元格A5。但是,如果自定義函數返回雙數組,則結果會溢出包含該函數的單元格,並填充包含自定義函數的單元格的右下方的單元格。你可以用一個包含return [[1,2],[3,4]]的自定義函數來測試它;

所以我打電話給在小區C14

function test(input){ 
    var secondCell = SpreadsheetApp.getActiveSheet().getRange("C14").setValue("Ahoj"); 
    return secondCell.getValue(); 
} 

功能仍然得到錯誤

您沒有權限調用的setValue

我不能甚至可以在我調用該函數的單元格中設置數據。

有誰知道爲什麼這不起作用?


編輯:

我讀過可能重複Why can't you use setValue in a custom function?

但這不是解決我的問題。

不想編輯其他單元格。我只想編輯包含公式的原始單元格。根據引用的文字,如果它是包含公式的原始單元格,我應該可以編輯單元格。但我的例子即使只訪問自己,也會返回錯誤。

回答

0

您的代碼沒有任何意義,您將C14中的值設置爲「Ahoj」,然後獲取此已知變量,並嘗試將其返回以設置您剛設置爲「Ahoj」的單元格中「,它將取代你剛用來運行這個功能的功能。這幾乎是一個悖論。

讓你混亂,你可以得到C14的值,但是該函數不能在C14中調用,或者如果你想將C14的值設置爲「Ahoy」,那麼在該函數中,所有你需要的是:

function test(input){ 
    return 'Ahoj'; 
} 

如果你想在其他小區上有C14的值,那麼:

function test(input){ 
    return SpreadsheetApp.getActiveSheet().getRange('C14').getValue(); 
} 

返回值將是新的單元格的值,它沒有這樣做低谷setValue

+0

那麼有什麼用的函數setValue()? – jmt

+0

@ user5264480在自定義函數中沒有,但這只是使用Apps腳本的幾種方法之一。 – Kriggs