Google apps script 我的谷歌应用程序脚本没有';无法运行,serverhandler没有参数
我试图用脚本更改工作表,但效果不理想。我可以加载右边的面板,但是当我尝试记录更改时,什么也没有发生。似乎“masterFunctionPS”没有被称为。 功能选项将显示在面板、列表框和按钮上。但当我按下按钮时,没有附加任何内容。床单上没什么变化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
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;
}