我编写了一个脚本(得到了这里好心人的大力帮助),该脚本使用 Google Sheets 脚本复制 Google Drive 上的文件夹(和内容)。
它运行了很长一段时间,但后来我启用了 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());
}
既然你是没有收到任何日志对于脚本不起作用的用户,问题很可能与您的函数未正确执行和/或根本不执行有关。
这样做的一个问题是脚本没有附加到电子表格中。您可以尝试声明ss
变量为start
功能。上述行为的另一个问题可能是由于将错误的变量传递给函数而引起的。您可以通过使用来检查console.log()
并检查变量是否是预期的。
此外,由于您与多个用户共享此脚本,您可能需要查看一下编辑器附加组件 https://developers.google.com/gsuite/add-ons/concepts/types#editor_add-ons。这可以使共享变得更容易,因为用户只需要安装附加组件。
参考
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)