【问题标题】:Google Apps Script error: “You do not have permission to access the requested document”Google Apps 脚本错误:“您无权访问请求的文档”
【发布时间】:2021-04-23 11:01:19
【问题描述】:

我正在尝试创建一个脚本,在该脚本中,提交另一个电子表格时会更新日期和其他信息,并且该表格的 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, 3, 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, lengthStaffing, 3).setValues(staffing);
  
  var ptDays = sheet.getRange(teacherRow + 1, 5, lengthStaffing, 1).getValues();
  targetSheet.getRange(rowOfTargetSubjectInMasterSheet, 12, lengthStaffing, 1).setValues(ptDays);
  
  var lengthClass = countCellFor(classSheetRow);
  
  var classes = sheet.getRange(classSheetRow + 1, 1, lengthClass, 3).getValues();
  targetSheet.getRange(rowOfTargetSubjectInMasterSheet, 13, lengthClass, 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 应用程序的用户,但都不起作用。

谢谢

法子拉

【问题讨论】:

  • 您是否有权访问与此脚本相关的所有文档?

标签: google-apps-script


【解决方案1】:

如果您以自己的身份部署 WebApp:

  • 确保将Who has access to the app: 设置为AnyoneAnyone, even anonymous,以确保任何用户都可以访问WebApp
  • 请注意,所有请求(例如 GmailApp.sendEmail())都将代表您执行 - 以您的名义执行

如果您将 WebApp 部署为 User accessing the web app

  • 确保为代码运行的电子表格设置共享权限,使所有用户/您要运行 WebApp 的用户都具有编辑权限

【讨论】:

  • 这是所有各方都拥有编辑权限但仍然出现相同错误的问题。
  • 在您对代码进行最后一次更改后,您是否将 WebApp 重新部署为新版本?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
相关资源
最近更新 更多