gpt4 book ai didi

google-apps-script - 如何在团队云端硬盘中创建文件夹?

转载 作者:行者123 更新时间:2023-12-01 08:58:55 25 4
gpt4 key购买 nike

这是我第一次提交问题,所以如果我可以问得更好,请帮助我。

我想:

  • 创建文件夹
  • 在谷歌团队驱动器中
  • 嵌套在现有的 Team Drive 文件夹“路径”中
  • 来自 Google Apps 脚本,可以在脚本文件中或附加到 Google 表格

我相信这些资源告诉我如何创建 Team Drive 文件夹:

A方案:使用GAS创建文件夹。经过一些研究,我的理解是普通 GAS 还不能在 Team Drive 中创建文件夹。

[18-03-15 14:55:23:674 EDT] Execution failed: Cannot use this operation on a Team Drive item. (line 139, file "utils") [1.618 seconds total runtime]

//The folder with the current name doesn't exist - create it in the parent folder
var newFolder = DriveApp.createFolder(nextFolderName);
currFolder.addFolder(newFolder);

如果我错了,并且有一种简单的方法可以使 addFolder() 代码与 Team Drive 一起工作,那将是一个胜利。

更新 1:您可以使用普通 GAS 在团队云端硬盘中创建文件夹。被限制的是文件夹移动。这有效:

//The folder with the current name doesn't exist - create it in the parent folder
var newFolder = currFolder.createFolder(nextFolderName);

所以 B 计划:现在,我正在尝试使用 Google Drive REST API v3 创建文件夹。但是,即使 TEAM_ROOT_PATH_FOLDER_ID 在团队驱动器中,我在运行代码时只会在个人驱动器中获得一个无标题文件。我认为我的问题是获取 UrlFetchApp.fetch 的正确信息。就像请求正文没有被读取一样。

引用资料:

这是我使用 Google Apps 脚本和 Drive REST API 创建文件夹的代码:

var TEAM_ROOT_PATH_FOLDER_ID = "diPcXqabvgpX4tcZJZ-ms2Wg0bXf1Fem"; //TODO fill in based on parent folder

function test() {
createTeamDriveFolder(TEAM_ROOT_PATH_FOLDER_ID);
}


function createTeamDriveFolder(parentFolderId) {

//BUILD THE URL
var baseUrl = "https://www.googleapis.com/upload/drive/v3/files/";

var urlParams = { //TODO correct for this function (after you figure this out)
supportTeamDrives: true
//,alt: "json"
,uploadType: "media"
};

//CODE CREDIT: https://ctrlq.org/code/20514-list-team-drives-google-drive-apps-script
var queryString = Object.keys(urlParams).map(function(p) {
return [encodeURIComponent(p), encodeURIComponent(urlParams[p])].join("=");
}).join("&");

var apiUrlStr = baseUrl + "?" + queryString;


//BUILD THE REQUEST - HEADERS AND BODY
var token = ScriptApp.getOAuthToken();
var requestBody = {
mimeType: "application/vnd.google-apps.folder"
,name: "TeamDriveTestFolder"
,"parents": [parentFolderId]
};

var requestBodyStr = JSON.stringify(requestBody);
Logger.log("requestBody: " + requestBodyStr);

var requestParams = {
method: "POST"
,contentType: "application/json"
,contentLength: requestBodyStr.length
,headers: {"Authorization": "Bearer " + token}
,payload: requestBodyStr
};

var response = UrlFetchApp.fetch(apiUrlStr, requestParams);

Logger.log(response.getResponseCode());
Logger.log(response.getContentText());
}

但是,当我通过 API 测试运行 REST 调用时,我可以让一个文件夹出现在我的个人驱动器中(仍然是错误的):

supportsTeamDrives > true

WORKS(在个人驱动器根目录中创建的 TeamDriveTestFolder 文件夹):

{
"mimeType": "application/vnd.google-apps.folder",
"name": "TeamDriveTestFolder"
}

失败(404):

{
"mimeType": "application/vnd.google-apps.folder",
"name": "TeamDriveTestFolder",
"parents": ["diPcXqabvgpX4tcZJZ-ms2Wg0bXf1Fem"]
}

非常感谢您在破解此团队文件夹创建过程中提供的任何帮助。

最佳答案

对于第 3 点“嵌套在现有团队驱动器文件夹中”,您可以直接使用 GAS。以下是代码片段,

var parentFolder=DriveApp.getFolderById('folderId');
var newFolder=parentFolder.createFolder('name'); //replace name with Folder name.

这里需要在 folderId 字段中传递父文件夹 ID。您可以在 Team Drive 的 URL 中找到此 FolderID。在下图中,'0AFmY7fi4434bUk9PVA' 是 FolderID。 enter image description here

关于google-apps-script - 如何在团队云端硬盘中创建文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49523228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com