2016-11-19 67 views
0

我正嘗試創建一個Add On,其中用戶可以選擇從菜單中選擇,或者onEdit命令觸發對單元格的更改牀單。當我使用下面的代碼,附加到工作表上,它完美的工作,但是,當我測試它作爲AUTH-LIMITED(啓用或安裝&啓用)onEdit(e)功能不起作用。關於菜單按鈕的一切都工作得很好,我無法弄清楚如何獲得onEdit(e)調用,這是怎麼回事。Google表格附加onEdit(e)不適用於已啓用文檔

我已經嘗試過搜索所有,但沒有成功與如何解決這個具體問題。

預先感謝您!

function onEdit(e){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheeter = ss.getActiveSheet(); 
    sheeter.getRange("a1").setValue("Test"); 
    var range = e.range; 
    var val = range.getValues(); 
    if(val.length+val[0].length<=2){ 
    var val = range.getValue(); 
    if(range.getFormula()){} 
    else{ 
    var regex2 = new RegExp('[0-5]{0,1}[0-9]:[0-5]{0,1}[0-9].[0-5]{0,1}[0-9]$','g'); 
    var docContent2 = val.replace(regex2,"00:"+val); 
    range.setValue(docContent2); 
    range.setNumberFormat("[M]:SS.0"); 
    } 
} 

} 



function Mass_Convert(){ 
    var now = Date.now(); 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet(); 
    var range = sheet.getActiveRange(); 
    var val = range.getValues(); 
    var replaceBox = new Array(val.length); 
    var replaceFormat =range.getNumberFormats(); 

    for(var i=0;i<val.length;i++){ 
    replaceBox[i] = new Array(val[i].length); 
    replaceFormat[i] = new Array(val[i].length); 

for(var j=0;j<val[0].length;j++){ 
    var newRange = range.getCell(i+1,j+1); 
    var newVal = newRange.getValue(); 
    var format = newRange 

    if(newRange.getFormula()){ 
    replaceBox[i][j]=newRange.getFormula(); 
    replaceFormat[i][j] = newRange.getNumberFormat(); 
    } 

    else{ 
    if(isNaN(newVal)){ 
     var regex2 = new RegExp('[0-5]{0,1}[0-9]:[0-5]{0,1}[0-9].[0-5]{0,1}[0-9]$','g');   
     var docContent2 = newVal.replace(regex2,"00:"+newVal); 
     replaceBox[i][j] = docContent2; 
     replaceFormat[i][j] = "[M]:SS.0" 
    }else{ 
     replaceBox[i][j] = newVal; 
     replaceFormat[i][j] = newRange.getNumberFormat(); 

    } 
    } 
} 
} 
    range.setValues(replaceBox); 
    range.setNumberFormats(replaceFormat); 

} 

function onOpen(e) { 
    var ui = SpreadsheetApp.getUi(); 
    ui.createMenu('Split Conversion') 
    .addItem('Mass Convert Selected', 'Mass_Convert') 
    .addToUi(); 
} 

function onInstall(e) { 
    onOpen(e); 
} 

回答

1

我與我的附加和.getActiveSpreadsheet()測試此給出了錯誤:

Execution failed: The Add-on attempted an action that is not permitted in Test as Add-on mode. To use this action, you must deploy the Add-on

而且你onEdit()可能有權限問題。應該有一些條件在特定工作表上運行,否則它將在所有工作表上運行。

我還發現: onEdit(e) not working in Add-on

相關問題