Google apps script 我的谷歌应用程序脚本没有';无法运行,serverhandler没有参数

Google apps script 我的谷歌应用程序脚本没有';无法运行,serverhandler没有参数,google-apps-script,parameter-passing,Google Apps Script,Parameter Passing,我试图用脚本更改工作表,但效果不理想。我可以加载右边的面板,但是当我尝试记录更改时,什么也没有发生。似乎“masterFunctionPS”没有被称为。 功能选项将显示在面板、列表框和按钮上。但当我按下按钮时,没有附加任何内容。床单上没什么变化 function periodSelection() { var activeSS = SpreadsheetApp.getActiveSpreadsheet(); var sheetPS = activeSS.getSheetByName

我试图用脚本更改工作表,但效果不理想。我可以加载右边的面板,但是当我尝试记录更改时,什么也没有发生。似乎“masterFunctionPS”没有被称为。 功能选项将显示在面板、列表框和按钮上。但当我按下按钮时,没有附加任何内容。床单上没什么变化

function periodSelection() { 

  var activeSS = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheetPS = activeSS.getSheetByName("Periods"); 

  var uiPS = UiApp.createApplication().setWidth(300); 

  var panelPS = uiPS.createVerticalPanel(); 

  var periodPS = uiPS.createListBox(); 
  for (var i = 2; i < 13; i++) { 
    var range = "A" + i; 
    periodPS.addItem(sheetPS.getRange(range).getValue()); 
  } 

  var endDatePS = uiPS.createDatePicker(); 

  var recordPS = uiPS.createButton("Enregistrer"); 

  var masterPS = uiPS.createServerHandler('masterFunctionPS'); 
  masterPS.addCallbackElement(periodPS) 
          .addCallbackElement(endDatePS) 
  recordPS.addClickHandler(masterPS); 

  panelPS.add(periodPS); 
  panelPS.add(endDatePS); 
  panelPS.add(recordPS); 

  uiPS.add(panelPS); 

  SpreadsheetApp.getUi().showSidebar(uiPS); 

  return uiPS; 
} 

function masterFunctionPS(element) { 

  var parameterPS = element.parameter; 
  var appE = UiApp.getActiveApplication(); 

  var periodE = parameterPS.periodPS; 
  var endDateE = parameterPS.endDatePS; 
  var activeE = parameterPS.activeSS; 
  var sheetE = parameterPS.sheetPS; 

  switch (periodE)  { 
        case "P1": 
            sheetE.getRange("C2").setValue(endDateE); 
            break; 
        case "P2": 
            sheetE.getRange("C3").setValue(endDateE); 
            break; 
        case "P3": 
            sheetE.getRange("C4").setValue(endDateE); 
            break; 
        case "P4": 
            sheetE.getRange("C5").setValue(endDateE); 
            break; 
        case "P5": 
            sheetE.getRange("C6").setValue(endDateE); 
            break; 
        case "P6": 
            sheetE.getRange("C7").setValue(endDateE); 
            break; 
        case "P7": 
            sheetE.getRange("C8").setValue(endDateE); 
            break; 
        case "P8": 
            sheetE.getRange("C9").setValue(endDateE); 
            break; 
        case "P9": 
            sheetE.getRange("C10").setValue(endDateE); 
            break; 
        case "10": 
            sheetE.getRange("C11").setValue(endDateE); 
            break; 
        case "P11": 
            sheetE.getRange("C12").setValue(endDateE); 
            break; 
    } 
        return (appE); 
  }
函数periodSelection(){
var activeSS=SpreadsheetApp.getActiveSpreadsheet();
var sheetPS=activeSS.getSheetByName(“期间”);
var uiPS=UiApp.createApplication().setWidth(300);
var panelPS=uiPS.createVerticalPanel();
var periodPS=uiPS.createListBox();
对于(var i=2;i<13;i++){
var range=“A”+i;
periodPS.addItem(sheetPS.getRange(range.getValue());
} 
var endDatePS=uiPS.createDatePicker();
var recordPS=uiPS.createButton(“Enregistrer”);
var masterPS=uiPS.createServerHandler('masterFunctionPS');
masterPS.addCallbackElement(periodPS)
.addCallbackElement(endDatePS)
recordPS.addClickHandler(masterPS);
面板。添加(周期);
panelPS.add(endDatePS);
面板。添加(记录);
uiPS.add(panelPS);
电子表格app.getUi().showSidebar(uiPS);
返回UIP;
} 
函数主函数(元素){
var参数ps=element.parameter;
var appE=UiApp.getActiveApplication();
var periodE=参数ps.periodPS;
var endDateE=参数ps.endDatePS;
var activeE=参数ps.activeSS;
var sheetE=参数ps.sheetPS;
开关(周期){
案例“P1”:
表E.getRange(“C2”).setValue(EndDate);
打破
案例“P2”:
sheetE.getRange(“C3”).setValue(EndDate);
打破
案例“P3”:
表E.getRange(“C4”).setValue(EndDate);
打破
案例“P4”:
表E.getRange(“C5”).setValue(EndDate);
打破
案例“P5”:
表E.getRange(“C6”).setValue(EndDate);
打破
案例“P6”:
sheetE.getRange(“C7”).setValue(EndDate);
打破
案例“P7”:
sheetE.getRange(“C8”).setValue(EndDate);
打破
案例“P8”:
sheetE.getRange(“C9”).setValue(EndDate);
打破
案例“P9”:
sheetE.getRange(“C10”).setValue(EndDate);
打破
案例“10”:
sheetE.getRange(“C11”).setValue(EndDate);
打破
案例“P11”:
sheetE.getRange(“C12”).setValue(EndDate);
打破
} 
返回(appE);
}

代码中有一些错误……主要是您忘记给小部件命名,而name用于从callback元素中检索值 下面是一个“已纠正”的版本,可以正常工作,但仍有2项无法正常工作,因为您试图在Ui中获取工作表的属性,但无法像这样完成

请解释一下你需要什么,我可以建议一个更好的方法

(请参阅代码中的注释,并查看记录器以查看事件参数中的值)

很高兴听到;-)请考虑接受这个答案。
function periodSelection() { 

  var activeSS = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheetPS = activeSS.getActiveSheet(); 

  var uiPS = UiApp.createApplication(); 

  var panelPS = uiPS.createVerticalPanel(); 

  var periodPS = uiPS.createListBox().setName('periodPS'); 
  for (var i = 2; i < 13; i++) { 
    var range = "A" + i; 
    periodPS.addItem(sheetPS.getRange(range).getValue()); 
  } 

  var endDatePS = uiPS.createDatePicker().setName('endDatePS'); 

  var recordPS = uiPS.createButton("Enregistrer"); 

  var masterPS = uiPS.createServerHandler('masterFunctionPS'); 
  masterPS.addCallbackElement(panelPS);
  recordPS.addClickHandler(masterPS); 

  panelPS.add(periodPS); 
  panelPS.add(endDatePS); 
  panelPS.add(recordPS); 

  uiPS.add(panelPS); 

  SpreadsheetApp.getUi().showSidebar(uiPS); 
} 

function masterFunctionPS(element) { 
  var parameterPS = element.parameter; 
  var appE = UiApp.getActiveApplication(); 
  Logger.log('parameter : '+JSON.stringify(parameterPS));

  var periodE = parameterPS.periodPS; 
  var endDateE = parameterPS.endDatePS; 
  var activeE = parameterPS.activeSS; // won't work
  var sheetE = parameterPS.sheetPS; // won't work

  switch (periodE)  { 
        case "P1": 
            sheetE.getRange("C2").setValue(endDateE); 
            break; 
        case "P2": 
            sheetE.getRange("C3").setValue(endDateE); 
            break; 
        case "P3": 
            sheetE.getRange("C4").setValue(endDateE); 
            break; 
        case "P4": 
            sheetE.getRange("C5").setValue(endDateE); 
            break; 
        case "P5": 
            sheetE.getRange("C6").setValue(endDateE); 
            break; 
        case "P6": 
            sheetE.getRange("C7").setValue(endDateE); 
            break; 
        case "P7": 
            sheetE.getRange("C8").setValue(endDateE); 
            break; 
        case "P8": 
            sheetE.getRange("C9").setValue(endDateE); 
            break; 
        case "P9": 
            sheetE.getRange("C10").setValue(endDateE); 
            break; 
        case "10": 
            sheetE.getRange("C11").setValue(endDateE); 
            break; 
        case "P11": 
            sheetE.getRange("C12").setValue(endDateE); 
            break; 
    } 
        return appE; 
  }
function masterFunctionPS(element) { 
  var parameterPS = element.parameter; 
  var appE = UiApp.getActiveApplication(); 
  Logger.log('parameter : '+JSON.stringify(parameterPS));

  var periodE = parameterPS.periodPS; 
  var endDateE = parameterPS.endDatePS; 
//  var activeE = parameterPS.activeSS; // won't work
//  var sheetE = parameterPS.sheetPS; // won't work
  var activeE = SpreadsheetApp.getActiveSpreadsheet(); 
  var sheetE = activeE.getActiveSheet(); 

  switch (periodE)  { 
        case "P1": 
            sheetE.getRange("C2").setValue(endDateE); 
            break; 
        case "P2": 
            sheetE.getRange("C3").setValue(endDateE); 
            break; 
        case "P3": 
            sheetE.getRange("C4").setValue(endDateE); 
            break; 
        case "P4": 
            sheetE.getRange("C5").setValue(endDateE); 
            break; 
        case "P5": 
            sheetE.getRange("C6").setValue(endDateE); 
            break; 
        case "P6": 
            sheetE.getRange("C7").setValue(endDateE); 
            break; 
        case "P7": 
            sheetE.getRange("C8").setValue(endDateE); 
            break; 
        case "P8": 
            sheetE.getRange("C9").setValue(endDateE); 
            break; 
        case "P9": 
            sheetE.getRange("C10").setValue(endDateE); 
            break; 
        case "10": 
            sheetE.getRange("C11").setValue(endDateE); 
            break; 
        case "P11": 
            sheetE.getRange("C12").setValue(endDateE); 


             break; 
        } 
// the following line is only for test... remove it when it works!!! 
            sheetE.getRange("A1").setValue('failed to write value '+endDateE); 
         return appE; 
    }