我编写了一个脚本(得到了这里好心人的大力帮助),该脚本使用 Google Sheets 脚本复制 Google 云端硬盘上的文件夹(和内容)。
它在很长一段时间内运行良好,但后来我启用了 V8 引擎(现在已禁用)。问题是,它仍然适用于我(也许还有其他两个用户),但不适用于其他所有人。我不是程序员,但我学到了足够的知识来帮助我在 Excel/表格上自动执行一些任务。
到目前为止,我已尝试重新检查所有权限、创建全新的工作表、分配新所有者、删除触发器、了解有关 V8 的更多信息。但它并没有真正起作用,因为我什至无法找出问题所在。
如果有任何线索,我将不胜感激。 TIA
PS:我们使用共享驱动器,所有用户都可以访问源/目标文件夹。
这是脚本:
function onClick() {
ss.getRange("B2:B8").clearContent();
}
function start() {
var sourceFolder = ss.getRange("B19").getValue() ; // Change every month
var targetFolder = ss.getRange("B22").getValue();
var source = DriveApp.getFoldersByName(sourceFolder); // Grab the folder we're going to copy
var parentFolder=DriveApp.getFolderById(ss.getRange("B11").getValue()); // Destination for the new folder.
var target = parentFolder.createFolder(targetFolder);
if (source.hasNext()) {
copyFolder(source.next(), target);
}
}
function copyFolder(source, target) {
var folders = source.getFolders();
var files = source.getFiles();
var prefix = ss.getRange("B23").getValue();
while(files.hasNext()) {
var file = files.next();
file.makeCopy(file.getName(), target).setName(prefix + file.getName());
}
while(folders.hasNext()) {
var subFolder = folders.next();
var folderName = subFolder.getName();
var targetFolder = target.createFolder(folderName);
copyFolder(subFolder, targetFolder);
var NewFolderUrl = target.getUrl()
SpreadsheetApp.getActiveSheet().getRange('B8').setValue(NewFolderUrl);
}
//file.setName(prefix + file.getName());
}
最佳答案
由于您没有获得脚本不起作用的用户的任何日志,因此问题很可能与您的函数未正确执行和/或根本没有执行有关。
此问题的一个问题是脚本未附加到电子表格中。您可以尝试向 start
函数声明 ss
变量。上述行为的另一个问题可能是由于将错误的变量传递给函数而引起的。您可以使用 console.log()
并检查变量是否是预期的变量来进行检查。
此外,由于您与多个用户共享此脚本,因此您可能需要查看 Edditor add-ons 。这可以使共享变得更容易,因为用户只需要安装该附加组件。
引用
关于javascript - 引入 V8 后,Google Apps 脚本无法为其他用户完全执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62072144/