如何解决Google Apps 脚本错误:“您无权访问所请求的文档”
我正在尝试创建一个脚本,其中在提交另一个电子表格时会更新日期和其他信息,并且该表格的 pdf 版本会发送给另一名工作人员,然后他们可以批准相同的内容。虽然代码为我运行,但其他工作人员无法使用该脚本,因为尽管他们拥有对所有文档的编辑访问权限,但他们不断收到“您无权访问所请求文档的权限”。
关于为什么会发生这种情况的任何想法。我希望员工能够运行的代码是:
function sendToResponse() {
var subject = sheet.getRange(3,2).getValue();
var rowOfTargetSubjectInMasterSheet = rowOfTarget(subject);
var myLastYearGroupCell = countCellForTargetSheet(sheet,12,3);
var myLastPeriodLengthCell = countCellForTargetSheet(sheet,12 + myLastYearGroupCell + 5,3);
Logger.log(myLastYearGroupCell);
Logger.log(myLastPeriodLengthCell);
var stuGroup = sheet.getRange(12,3,myLastYearGroupCell).getValues();
targetSheet.getRange(rowOfTargetSubjectInMasterSheet + myLastYearGroupCell + 2,5,myLastYearGroupCell).setValues(stuGroup);
var lengthTeaching = sheet.getRange(17 + myLastYearGroupCell,myLastPeriodLengthCell).getValues();
targetSheet.getRange(rowOfTargetSubjectInMasterSheet + myLastPeriodLengthCell + 2,7,myLastPeriodLengthCell).setValues(lengthTeaching);
var lengthStaffing = countCellFor(teacherRow);
var staffing = sheet.getRange(teacherRow + 1,1,lengthStaffing,3).getValues();
targetSheet.getRange(rowOfTargetSubjectInMasterSheet,8,3).setValues(staffing);
var ptDays = sheet.getRange(teacherRow + 1,1).getValues();
targetSheet.getRange(rowOfTargetSubjectInMasterSheet,1).setValues(ptDays);
var lengthClass = countCellFor(classSheetRow);
var classes = sheet.getRange(classSheetRow + 1,lengthClass,13,3).setValues(classes);
var ctlName = sheet.getRange(4,2).getValue();
var ctlEmail = sheet.getRange(5,2).getValue();
var sltName = sheet.getRange(6,2).getValue();
var sltEmail = sheet.getRange(7,2).getValue();
var emailDate = targetSheet.getRange(rowOfTargetSubjectInMasterSheet,16);
var sltResponse = targetSheet.getRange(rowOfTargetSubjectInMasterSheet,17).getValue();
var cell = targetSheet.getRange(rowOfTargetSubjectInMasterSheet,1);
var workingRow = cell.getRow();
if (sltResponse == '') {
var approve = url + "?approval=Approved" + "&reply=" + ctlEmail + "&r=" + workingRow + "&sltName=" + sltName;
var email = HtmlService.createTemplateFromFile('CTLRequestResponseSLTEmail');
email.sltName = sltName;
email.subject = subject;
email.CTL = ctlName;
email.approve = approve;
var response = email.evaluate().getContent();
MailApp.sendEmail({
to: sltEmail,subject: 'TiMetable 2020-2021: CTL Request for ' + subject,htmlBody: response,attachments: [SpreadsheetApp.getActiveSpreadsheet()]
});
var d = new Date();
emailDate.setValue(d);
};
}
function doGet(e) {
// Update Spreadsheet
var answer = e.parameter.approval;
var workingRow = e.parameter.r;
var d = new Date()
targetSheet.getRange(workingRow,17).setValue(answer);
targetSheet.getRange(workingRow,16).setValue(d);
//Email
var ctlEmail = e.parameter.reply;
var sltName = e.parameter.sltName;
GmailApp.sendEmail(ctlEmail,"CTL Request 2020-2021","Thank you for submitting your CTL Request for 2020-2021. The form has been sent to your SLT Line Manager for approval.");
var app = HtmlService.createHtmlOutput(sltName + " thank you for your response.");
return app
}
我已部署为 Web 应用程序,并尝试以我自己和访问 Web 应用程序的用户身份执行应用程序,但均无效。
谢谢
法兹拉
解决方法
如果您自己部署 WebApp:
- 确保将
Who has access to the app:
设置为Anyone
或Anyone,even anonymous
以确保任何用户都可以访问 WebApp - 请注意,所有请求(例如
GmailApp.sendEmail()
)都将以您的名义执行 - 即以您的名义
如果您将 WebApp 部署为 User accessing the web app
:
- 确保为代码运行的电子表格设置共享权限,以便所有用户/要运行 WebApp 的用户都具有编辑权限
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。