Google apps script makeCopy Google Drive和异常:拒绝访问:DriveApp。(第xxx行,文件“代码”)
我有一个脚本,可以为Google工作表中的每一行复制一个文件。它在2020年2月和3月初工作良好。它现在(2020年3月21日)失败,错误为:异常:拒绝访问:DriveApp。(第xxx行,文件“代码”)。请参阅下面代码中的注释,了解代码失败的地方Google apps script makeCopy Google Drive和异常:拒绝访问:DriveApp。(第xxx行,文件“代码”),google-apps-script,Google Apps Script,我有一个脚本,可以为Google工作表中的每一行复制一个文件。它在2020年2月和3月初工作良好。它现在(2020年3月21日)失败,错误为:异常:拒绝访问:DriveApp。(第xxx行,文件“代码”)。请参阅下面代码中的注释,了解代码失败的地方 //global variables to setup rows and columns to check for data var startrow = 5; var endrow = 66; //edit this to be the
//global variables to setup rows and columns to check for data
var startrow = 5;
var endrow = 66; //edit this to be the last row of sheet1 with names or emails in
var emailcol = 3;
var idcol = 1;
var namecol = 2;
var isPresentCol = 4;
function makeFiles() {
//Function to make a copy of a file for everyone in a list on a spreadsheet
//Have the filenames include their names populated from the spreadsheet
var activeSheet;
var activeRange;
//get the active range of teh active sheet
activeSheet = SpreadsheetApp.getActiveSheet();
activeRange = SpreadsheetApp.getActiveRange();
//which file to copy
filetocopy = activeSheet.getRange(2,2).getValue();
activeSheet.getRange(2,3).setValue(filetocopy);
var theFileReference = DriveApp.getFileById(filetocopy);
var oldFileName = theFileReference.getName();
//create file for each person - hardcoded rows and columns
for (var i = startrow; i < endrow + 1; i++) {
var currentValue = activeSheet.getRange(i, namecol).getValue();
var newFileName = currentValue + ' - ' + oldFileName; //change this line if you want to change the filename formatting
theFileReference.makeCopy(newFileName); //This is line xxx where the code fails
//find the fileId of the new file
var dupFileArray = [];
var theNewFileReference = DriveApp.getFilesByName(newFileName);
while(theNewFileReference.hasNext()){
var file = theNewFileReference.next();
dupFileArray.push(file.getId());
};
activeSheet.getRange(i, 1).setValue(dupFileArray);
}
}
//设置行和列以检查数据的全局变量
var startrow=5;
var endrow=66//将此编辑为sheet1的最后一行,其中包含姓名或电子邮件
var=3;
var-idcol=1;
var-namecol=2;
var isPresentCol=4;
函数makeFiles(){
//函数为电子表格列表中的每个人制作文件副本
//让文件名包含从电子表格填充的文件名
var-activeSheet;
var活性范围;
//获取活动工作表的活动范围
activeSheet=SpreadsheetApp.getActiveSheet();
activeRange=SpreadsheetApp.getActiveRange();
//复制哪个文件
filetocopy=activeSheet.getRange(2,2.getValue();
activeSheet.getRange(2,3).setValue(filetocopy);
var theFileReference=DriveApp.getFileById(filetocopy);
var oldFileName=theFileReference.getName();
//为每个人创建文件-硬编码行和列
对于(变量i=startrow;i
已向脚本授予适当的范围和授权,并在项目属性中验证。Google是否更改了使用此方法所需的权限?我能做些什么来让这一切顺利进行。我仅在需要时在脚本编辑器中手动触发脚本。提前感谢。是一个文件失败还是每个文件都失败?您是否有权访问该文件并有权制作该文件的副本?是的,我拥有/创建了原始文件及其应在其中创建的文件夹,因此具有完全权限。我在我的工作和个人谷歌账户上尝试过同样的错误。它在第一次运行时失败,因此不会创建新文件。如果在
for
循环之外运行代码,您可以进行复制吗?@Jescanellas我尝试将代码移到for循环之外,但仍然不起作用。谢谢你的建议。我做了一些测试,但是我不能重现这个问题。如果您已经在使用全驱动器作用域,并且您是文件的所有者,那么您不应该有任何问题。如果您是一个G套件用户,我建议您检查一下他们的问题:it是在一个文件上失败还是在每个文件上失败?您是否有权访问该文件并有权制作该文件的副本?是的,我拥有/创建了原始文件及其应在其中创建的文件夹,因此具有完全权限。我在我的工作和个人谷歌账户上尝试过同样的错误。它在第一次运行时失败,因此不会创建新文件。如果在for
循环之外运行代码,您可以进行复制吗?@Jescanellas我尝试将代码移到for循环之外,但仍然不起作用。谢谢你的建议。我做了一些测试,但是我不能重现这个问题。如果您已经在使用全驱动器作用域,并且您是文件的所有者,那么您不应该有任何问题。如果你是G套件的用户,我建议你越过他们的