我在電子表格中使用了一個腳本。它在B2單元格,並且需要像=myfunction(A2:A12)
這樣的參數。該功能從內部獲取來自大範圍單元的信息。Google Apps腳本 - 電子表格運行腳本onEdit?
似乎沒有任何工作。我試着將它添加到
腳本>資源>當前項目的觸發器>在編輯
腳本>資源>當前項目的觸發器>在開放
我怎麼能有這樣的功能更新與每個文檔編輯的結果呢?
我在電子表格中使用了一個腳本。它在B2單元格,並且需要像=myfunction(A2:A12)
這樣的參數。該功能從內部獲取來自大範圍單元的信息。Google Apps腳本 - 電子表格運行腳本onEdit?
似乎沒有任何工作。我試着將它添加到
腳本>資源>當前項目的觸發器>在編輯
腳本>資源>當前項目的觸發器>在開放
我怎麼能有這樣的功能更新與每個文檔編輯的結果呢?
當你正在你的自定義函數中調用谷歌Apps服務(如getRange和的GetValues等),遺憾的是沒有與每個編輯更新這樣的自定義函數的方式,不是通過細胞的所有等你正在「觀看」編輯。
而且,也許更令人沮喪的,路過的解決辦法說你所有的「注視」單元的引用與公式單細胞不觸發更新 - 這似乎是一個需要引用「觀看「細胞直接。
您可以傳遞GoogleClock()作爲參數,它至少每分鐘更新一次函數輸出。
但是這個論壇上很多成員的建議(誰對這個東西比我有更多的知識)只是:「不要使用自定義函數」。
我不知道這確切的代碼將工作,但你可以嘗試這樣的事情......
function onEdit(event){
var activeSheet = event.source.getActiveSheet();
if(activeSheet.getName() == "ActiveSheetName") {
var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TargetSheetName");
targetSheet.getRange(2,2).setValue("=myfunction(A2:A12)");
}
}
假設在片「TargetSheetName」對B2單元格,並假設編輯的單元格上工作表「ActiveSheetName」,當您編輯任何工作表中的任何單元格時,onEdit函數將觸發。由於有一個if語句來檢查該編輯單元格是否位於工作表「ActiveSheetName」上,因此只有當編輯單元格位於該工作表上並且將B單元格設置爲value = myfunction(A2:A12)時,纔會觸發該單元格。迫使它來更新(我猜)。
希望我是正確的,而且我是有幫助的
好希望我的回答,並將其與該AdamL給了你第一個我想我的回答WAA愚蠢lool。 您可以使用OnEdit事件您的自定義功能代碼將值直接放到B2單元格中...
對不起,我的英語不是我的主要語言
我有類似的問題,對我來說,我想「看」一個特定的單元格來觸發我的功能。
我做了以下(假裝A1是我正在看的細胞)
IF(LEN(A1) < 1, " ", customFunction())
這如果我編輯的細胞成功地觸發。但是:
「自定義函數返回值,但不能設置值外 它們在細胞在大多數情況下,在 A1單元格的自定義函數不能修改單元格A5。但是,如果自定義函數返回一個 雙數組,則結果會溢出包含函數 的單元格,並將單元格填充到包含 自定義函數的單元格的下方和右側。你可以用含有 返回自定義函數測試這個[1,2],[3,4];」來自 :https://developers.google.com/apps-script/execution_custom_functions
這使得它幾乎是無用的,但它可能對你的工作情況?
如果自定義功能被分配到一個項目觸發它有更多的功率,從而親自最後我將它添加到「腳本>資源>當前項目的觸發器>上編輯」
基本上「看着一列」,所以如果當前單元格處於「編輯範圍」內,它只會執行某些操作。這有點不妥,需要一些隱藏的單元格,但它現在爲我工作
var rowIndex = thisspreadsheet.getActiveCell().getRowIndex();
var colIndex = thisspreadsheet.getActiveCell().getColumn();
//clamp to custom range
if(rowIndex < 3 && colIndex != 5)
{
return 0;
}
//check against copy
var name = SpreadsheetApp.getActiveSheet().getRange(rowIndex, 5).getValue();
var copy = SpreadsheetApp.getActiveSheet().getRange(rowIndex, 6).getValue();
if(name != copy)
{
///value has been changed, do stuff
SpreadsheetApp.getActiveSheet().getRange(rowIndex, 6).setValue(name);
}
「似乎沒有什麼工作」顯然是誇大其詞。什麼具體不起作用?例如,觸發器將一個事件作爲參數傳遞,所以一個預期範圍的自定義函數(如你所示)不會得到它。 – Mogsdad 2013-04-05 13:56:21
該函數在電子表格的單元格內使用,並在該單元格中顯示返回的結果。我希望函數更新文檔編輯中的單元格結果。 – HelpyHelperton 2013-04-05 14:30:19