google-apps-script - Google Apps 脚本 - 如何更改代码以在事件 Google 云端硬盘共享文件夹而不是根(我的云端硬盘)文件夹中创建 Google 表格文件?

标签 google-apps-script google-apps

下面有一些代码,它获取 Google 表格文件中的所有选项卡(不包括其中 2 个),并为每个选项卡创建独立的 Google 表格文件。目前,它们默认保存在根文件夹(我的云端硬盘)中,但我希望将它们创建在与我调用 Google Apps 脚本的文件相同的事件文件夹中。有谁知道我如何使用下面的代码做到这一点?我还想避免首先在“我的云端硬盘”中创建它,然后移动到共享云端硬盘的情况。这样做的原因是因为其他人可能会运行此代码,而我想避免出现“我的云端硬盘”中的文件夹需要根据运行此脚本的人在代码中进行更新的情况。

为简洁起见,我上面段落的简化版本:如何调整以下代码,以便创建的 Google 表格文件显示在事件的 Google 共享云端硬盘文件夹中?我将启用 Drive API。

我当前的代码:

function copySheetsToSS(){
  var ss = SpreadsheetApp.getActive();
  for(var n in ss.getSheets()){
    var sheet = ss.getSheets()[n];
    var name = sheet.getName();
    if(name != 'ControlTab' && name != 'RawData'){
      var alreadyExist = DriveApp.getFilesByName(name);
      while(alreadyExist.hasNext()){
        alreadyExist.next().setTrashed(true);
      }
      var copy = SpreadsheetApp.create(name);
      sheet.copyTo(copy).setName(name);
      copy.deleteSheet(copy.getSheets()[0]);
    }
  }
}

最佳答案

按照你的情况,当你的脚本修改后,进行如下修改如何?

修改后的脚本:

在此修改中,使用了 Drive API。所以,please enable Drive API at Advanced Google services .

function copySheetsToSS() {
  var ss = SpreadsheetApp.getActive();
  var folderId = DriveApp.getFileById(ss.getId()).getParents().next().getId();
  for (var n in ss.getSheets()) {
    var sheet = ss.getSheets()[n];
    var name = sheet.getName();
    if (name != 'ControlTab' && name != 'RawData') {
      var alreadyExist = DriveApp.getFilesByName(name);
      while (alreadyExist.hasNext()) {
        alreadyExist.next().setTrashed(true);
      }
      var newSS = Drive.Files.insert({ title: name, mimeType: MimeType.GOOGLE_SHEETS, parents: [{ id: folderId }] }, null, { supportsAllDrives: true });
      var copy = SpreadsheetApp.openById(newSS.id);
      sheet.copyTo(copy).setName(name);
      copy.deleteSheet(copy.getSheets()[0]);
    }
  }
}
  • 在此修改中,首先检索电子表格的父文件夹。并且,在循环中,使用 Drive API 在特定文件夹中创建新的电子表格。

注意:

  • 此时需要具有该文件夹的写权限。请注意这一点。

引用文献:

关于google-apps-script - Google Apps 脚本 - 如何更改代码以在事件 Google 云端硬盘共享文件夹而不是根(我的云端硬盘)文件夹中创建 Google 表格文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73030543/

相关文章:

javascript - 统计 Google Apps 域的用户总数

api - 使用 bash curl 和 oauth 返回谷歌应用程序用户帐户数据?

javascript - 多个 .gs 文件中的多个 onOpen() 函数

javascript - 为什么所有字段在 Data Studio 中都显示为维度?

google-apps-script - 在 Google Apps 脚本库中创建类似命名空间的组织

google-apps-script - 未经授权的 401 错误,同时 'execute as me'

google-docs-api - Google Apps 管理员可以使用 Drive SDK 管理用户文件吗?

email - 如何避免谷歌邮件服务器要求我通过浏览器登录?

javascript - 如何将单元格中的数字限制为 x 个小数点?

javascript - 如何将 React 应用程序作为 Gmail 插件运行?