Google 从我的云端硬盘到共享云端硬盘的 Apps 脚本

Google Apps Script from My Drive to Shared Drives

我通过 Google 表格和 Apps 脚本设计了一个反馈系统。它在我的驱动器上运行良好。当我将它移动到共享驱动器时,“DriveApp”不喜欢这个更改。

基于 very useful article that John from Google shard with me, I activated Advanced Drive Service并使用方法Drive.Drives.insert允许您指定驱动器ID。

如何使用此方法指定共享驱动器中的文件夹?就像我们的 DriveApp (DriveApp.getFolderByID)。你会怎么做?

来自How can I specify a folder in a shared drive with this method? Like the one we have with DriveApp (DriveApp.getFolderByID). How would you do that?,我猜你可能想要检索文件夹信息。如果我的理解是正确的,下面的示例脚本怎么样?

示例脚本 1:

当您可以知道共享云端硬盘中文件夹的文件夹ID时,您可以使用以下脚本。在使用它之前,请在高级 Google 服务中启用驱动器 API。

const folderId = "###"; // Please set the folder ID in a shared Drive.

// This sample uses Drive service (DriveApp).
const folder = DriveApp.getFolderById(folderId);
const folderName1 = folder.getName();
console.log(folderName1)

// This sample uses Drive API.
const obj = Drive.Files.get(folderId, {supportsTeamDrives: true});
const folderName2 = obj.title;
console.log(folderName2)
  • 在此示例脚本中,文件夹的文件夹名称位于使用 Google Apps 脚本的共享云端硬盘中。该脚本包括 2 个模式。请确认。

  • 对于DriveApp,使用文件ID和文件夹ID时,可以检索共享Drive中的文件和文件夹。

示例脚本 2:

当您不知道共享Drive中文件夹的文件夹ID时,可以使用以下脚本。

const driveId = "###"; // Please set your Drive ID.

// This sample uses Drive service (DriveApp).
const folders = DriveApp.getFolderById(driveId).getFolders();
while (folders.hasNext()) {
  const folder = folders.next();
  const folderName1 = folder.getName();
  console.log(folderName1)
}

// This sample uses Drive API.
const res = Drive.Files.list({ corpora: "drive", includeItemsFromAllDrives: true, supportsAllDrives: true, driveId, q: `mimeType='${MimeType.FOLDER}' and trashed=false` });
res.items.forEach(({title}) => console.log(title));
  • 在此脚本中,对于 DriveApp,文件夹列表是从共享云端硬盘的顶级文件夹正下方检索的。请注意这一点。
  • 对于云端硬盘API,检索共享云端硬盘中所有文件夹的文件夹列表。但是,这是一个示例脚本。因此,在这种情况下,可以检索 100 个文件夹。当您想检索更多时,请设置maxResultspageToken。请注意这一点。

注:

  • 这些示例脚本是简单的脚本。所以,请根据您的实际情况进行修改。

参考文献: