Google应用程序脚本表中的服务器处理程序无效

时间:2014-04-17 22:32:53

标签: google-app-engine gwt google-apps-script google-sheets

尝试从脚本管理器菜单执行此代码时出现此错误。

  

遇到错误:找不到脚本函数:函数click(e){          var app = UiApp.getActiveApplication();          app.getElementById( '标签')调用setVisible(假)。         。SpreadsheetApp.getActiveSpreadsheet()显示(UI);          返回app;
       }

function readRows() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getValues();

  for (var i = 0; i <= numRows - 1; i++) {
    var row = values[i];
    Logger.log(row);
  }
};


function onOpen() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();   
  var entries = [{
    name : "ShowUi",
    functionName : "showSidebar"
  }];
  spreadsheet.addMenu("Script Center Menu", entries);
};

function click(e) {
   var app = UiApp.getActiveApplication();
   app.getElementById('label').setVisible(false);
  SpreadsheetApp.getActiveSpreadsheet().show(ui);
   return app;  
 }
function showSidebar(e){
  var ui= UiApp.createApplication()
     .setTitle('My UiApp Application')
     .setWidth(250)
     .setHeight(300);

  var button = ui.createButton("I am a button!");
  var handler = ui.createServerHandler(click);
  button.addClickHandler(handler);
  var label =ui.createLabel('The photograph on the dashboard taken years ago...').setId('label').setVisible(false);
  handler.addCallbackElement(label).addCallbackElement(button);
  ui.add(label);
  ui.add(button);

 SpreadsheetApp.getActiveSpreadsheet().show(ui);

  return ui;
};

对不起,我不得不在这里张贴可能很明显,但我无法在互联网上找到答案。任何解决方案或替代方式我可以做同样的事情将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

function showSidebar(e){

  var ui= UiApp.createApplication()
     .setTitle('My UiApp Application')
     .setWidth(250)
     .setHeight(300);

  var label = ui.createLabel('The photograph on the dashboard taken years ago...').setId('label').setVisible(false);

  ui.add(label);
  ui.add(ui.createButton('I am a button!', ui.createServerHandler('onClick')).setId('button'));


  SpreadsheetApp.getActiveSpreadsheet().show(ui);

  return ui;
};

function onClick(e) {
   var app = UiApp.getActiveApplication();
   app.getElementById('label').setVisible(false);
   //SpreadsheetApp.getActiveSpreadsheet().show(ui);
   app.close();
   return app;  
};