Google apps script Can';Google电子表格中的共享用户不能调用doPost函数
现在,我正在我的谷歌电子表格中使用谷歌应用程序脚本创建一个邮件发送应用程序。 此应用程序执行以下操作Google apps script Can';Google电子表格中的共享用户不能调用doPost函数,google-apps-script,google-sheets,google-drive-api,Google Apps Script,Google Sheets,Google Drive Api,现在,我正在我的谷歌电子表格中使用谷歌应用程序脚本创建一个邮件发送应用程序。 此应用程序执行以下操作 添加菜单以在电子表格打开时调用此应用程序 单击菜单时显示用于输入邮件主题的UI 当电子表格opend用户按下提交按钮时,向电子表格中包含的每个地址发送邮件 问题 当我使用时,应用程序运行良好。 但是其他可以编辑电子表格的用户不能发送电子邮件(显示界面正常) 从dubug日志中,我发现没有调用doPost函数 请告诉我有什么问题 节目 /* *@OnlyCurrentDoc * *在活动电子表格
/*
*@OnlyCurrentDoc
*
*在活动电子表格中创建自定义菜单
*/
功能开启(e){
Logger.log(“名为onOpen”);
var sheet=SpreadsheetApp.getActiveSpreadsheet();
变量菜单项=[
{name:“MailSendApp”,functionName:“displayAppUi”}
];
sheet.addMenu(“CustomAppMenu”,菜单项);
}
/*
*@OnlyCurrentDoc
*
*显示用户界面
*/
函数displayAppUi(){
Logger.log(“调用displayAppUi”);
var sheet=SpreadsheetApp.getActiveSpreadsheet();
var app=UiApp.createApplication();
var formPanel=app.createFormPanel().setId('form').setEncoding('multipart/form data');
var scrollPanel=app.createScrollPanel();
var panel=app.createVerticalPanel();
var appLabel=app.createLabel(“Sendmails电子表格应用”);
var subjectLabel=app.createLabel(“主题”);
var subjectTextBox=app.createTextBox().setName(“主题”);
var bodyLabel=app.createLabel(“主体”);
var bodyTextArea=app.createTextArea().setName(“body”);
var attachFile=app.createFileUpload().setName('attachFile');
var sendBtn=app.createSubmitButton().setText(“全部发送”);
var sheetName=app.createHidden(“sheetName”,SpreadsheetApp.getActiveSheet().getName());
//设置客户端处理程序
var submitClientHandler=app.createClientHandler()
.forEventSource().setEnabled(false)
.forEventSource().setText(“发送…”);
sendBtn.addClickHandler(submitClientHandler)
//设置sytles
应用设定宽度(800);
附件设定高度(400);
panel.setStyleAttributes({width:“100%”});
setStyleAttributes({color:“green”,fontSize:“2em”});
subjectTextBox.setStyleAttributes({width:“100%”});
bodyTextArea.setHeight(“240”);
bodyTextArea.setWidth(“780”);
滚动面板设置高度(“380”);
scrollPanel.setWidth(“800”);
panel.add(appLabel)
.add(主题标签)
.add(主题文本框)
.添加(车身标签)
.add(bodyTextArea)
.add(附件文件)
.add(图纸名称)
.add(sendBtn);
scrollPanel.add(面板)
添加(滚动面板);
添加应用程序(formPanel);
表.显示(应用程序);
}
/*
*@OnlyCurrentDoc
*
*处理程序通过输入主题和正文向活动工作表中的地址发送电子邮件。
*/
函数doPost(e){
Logger.log(“称为doPost”);
var param=e.参数;
var subject=param.subject;
变量体=参数体;
var attachFile=param.attachFile;
var sheetName=param.sheetName;
var mailpoptions={};
var mailAttachments=[]
//设置附件文件(如果存在)
if(attachFile!=null){
邮件附件推送({
文件名:attachFile.getName(),
mimeType:attachFile.getContentType(),
内容:attachFile.getBytes()
});
}
mailOptions[“附件”]=邮件附件;
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var电子邮件=_收集电子邮件地址(表格);
对于(var i=0;i
在doPost
触发器中使用openByID
而不是.getActiveSpreadsheet().getSheetByName(sheetName)
var ss = SpreadsheetApp.openById(_spreadsheetId);
var sheet = ss.getSheetByName(_sheetName);