编程语言
首页 > 编程语言> > javascript-学生成绩簿.由于“访问被拒绝:DriveApp”而无法完成脚本

javascript-学生成绩簿.由于“访问被拒绝:DriveApp”而无法完成脚本

作者:互联网

我的脚本从工作表“ Studenti”中选取了35个学生姓名.然后找到具有其名称的适当文件夹(即“ Smith Peter”),删除具有其名称的旧成绩的旧pdf文档(即“ Smith Peter.pdf”),并将新制作的pdf保存到文件夹(“ Smith Peter”)具有新等级的文档(‘Smith Peter.pdf’).并从列表中选择另一个学生.

问题:经过1,2或3次迭代后,脚本停止显示:访问被拒绝:DriveApp. (第22行,文件“代码”:files.next().setTrashed(true);).一周前,脚本运行正常,没有问题,我尝试在此处更改名称,文件夹,目标位置,源工作表并查看建议.但是没有成功.我不知道第22行出了什么问题,请帮助!

附带的代码

Execution transcript(显示脚本已停止的位置)

function generatePdf() {

var report = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Gradebook ready to save as pdf
var zasobnik = SpreadsheetApp.openById('1eygLDH0iJoXfcVOMIin0hnKpMF59HszmXZosPKvwYWc');  
var zasobsheet = zasobnik.getSheetByName("Studenti"); // list of 35 students with names, Folder IDs
var data = zasobsheet.getDataRange().getValues(); 
  
for (var i = 1; i < data.length; i++){
    report.getRange('B2').setValue(data[i][0]); // setting student's name in a gradebook (first column)
    report.getRange('B3').setValue(' '); // just to jump from B2 to B3
  
var pdf = DriveApp.getFileById('1WHwm7xK28Orj22RxaKWEsCl3UWvWxYUhRg4ZGf87-GQ'); // ID of Gradebook (IF of ActiveSpreadsheet)
var theBlob = pdf.getBlob().getAs('application/pdf').setName(data[i][0] + ".pdf");
var folder = DriveApp.getFolderById(data[i][2]); // third column
  
var files = DriveApp.getFilesByName(data[i][0] + ".pdf"); // pdf with old grades
      while (files.hasNext()) {    
       files.next().setTrashed(true);    
   }
var newFile = folder.createFile(theBlob); // creating pdf with new grades in the student's folder
 
 }
}

解决方法:

经过几次实验,我找到了问题的根源,但没有找到解决方案. “访问被拒绝”的问题与以下事实有关:我不是脚本创建的文件的所有者,只有文件的所有者才可以垃圾回收或删除该文件.尽管我是脚本的作者,并且对放置在驱动器上的文件具有编辑权限,但该文件无法正常工作.另一方面,我可以手动删除/删除文件而不会出现问题(这对我来说是一种误导).

获得的经验:如果您允许其他人使用创建新文件的脚本,并且还破坏了旧文件,则下次您可能无法(拒绝访问)丢弃其他用户创建的文件时,您可能无法完成脚本(尽管该文件是在您自己的驱动器上创建的!).

调整后的问题:是否有人知道如何编写脚本来删除/删除我不是所有者(但我拥有编辑权限)并且由其他用户在驱动器上创建的文件?

标签:javascript,pdf,google-sheets,google-drive-api
来源: https://codeday.me/bug/20191012/1901194.html