Google表格附加组件onEdit(e)未使用启用文档

时间:2016-11-19 03:56:59

标签: google-apps-script

我正在尝试创建一个Add On,其中用户可以选择从菜单中选择,或者onEdit命令触发对工作表中单元格的更改。当我使用下面的代码时,附加到工作表上它完美地工作,但是,当我测试它作为AUTH-LIMITED(启用或安装并启用)时,onEdit(e)功能不起作用。关于菜单按钮的一切都很有效,我无法弄清楚如何调用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 个答案:

答案 0 :(得分:1)

我用我的插件测试了这个,而.getActiveSpreadsheet()给出了错误:

  

执行失败:加载项尝试在Test作为附加模式下不允许执行的操作。要使用此操作,您必须部署加载项

您的onEdit()也可能有权限问题。应该有一些条件在特定纸张上运行,否则它将在所有纸张上运行。

我也发现了这个: onEdit(e) not working in Add-on