javascript - 引入 V8 后,Google Apps 脚本无法为其他用户完全执行

标签 javascript google-apps-script google-sheets google-drive-api v8

我编写了一个脚本(得到了这里好心人的大力帮助),该脚本使用 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/

相关文章:

javascript - 未找到范围 - Google 电子表格

javascript - Angular 2 自定义验证器 : check if the input value is an integer?

asp-classic - 服务器端 javascript - 经典 asp

javascript - Google电子表格脚本,对大量数据应用公式后的实例状态

google-apps-script - 如何使用 Google Script 将数据添加到 Google Sheets 中的特定行

javascript - 如何获取所有表单触发器(不仅仅是当前脚本)?

javascript - 学生成绩簿。由于 "Access denied: DriveApp"无法完成脚本

arrays - 为什么列中最后一个非空单元格的这个 Google 表格公式有效?

javascript - 如何制作Javascript/HTML,停止并等待用户输入

javascript - 使用 JavaScript 代码生成 JSON 文件