使用 Javascript 在共享驱动器(Google 驱动器 API)中创建文件夹

Create folders in a shared drive ( Google Drive API) with Javascript

我有一个脚本可以将 csv 文件上传到共享驱动器并且工作正常,但是当我尝试创建文件夹时它不起作用。不确定我哪里出错了 我用来创建文件夹的代码

    function createFolder() {
      var parents = '1XNBrOtnXJU1MhYv0nrAwTDXRZ'
      var fileMetadata = {
        'name': 'sample_folder',
        'mimeType': 'application/vnd.google-apps.folder',
        'parents' : [parents]
      };

  drive.files.create({
    resource: fileMetadata,
    fields: 'id'
  }, function (err, file) {
    if (err) {
      // Handle error
      console.error(err);
    } else {
      console.log('Folder Id: ', file.id);
    }
  });
         
}`

您必须提供 application/vnd.google-apps.folder MIME 类型和标题。

这个link可能会有帮助https://developers.google.com/drive/api/v3/folder#create_a_folder

您仍然可以在 JavaScript 中使用提取 API。只需更改 URL

发件人:

https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&supportsAllDrives=true

收件人:

https://www.googleapis.com/drive/v3/files?supportsAllDrives=true

更改元数据中的 mimeType

发件人:

"mimeType": "text/csv",

收件人:

"mimeType": "application/vnd.google-apps.folder",

删除这行代码:

var form = new FormData();
form.append('metadata', new Blob([JSON.stringify(metadata)], { type: 'application/json' }));
form.append('file', file);

并直接使用元数据作为您的请求正文。

您的代码应如下所示:

var parents = "18-7shshazxhkashjfk-xO";
var metadata = {
  "name": filename,
  "mimeType": "application/vnd.google-apps.folder",
  "parents": [parents], // Google Drive folder id
};

var accessToken = gapi.auth.getToken().access_token;
fetch("https://www.googleapis.com/drive/v3/files?supportsAllDrives=true", {
  method: 'POST',
  headers: new Headers({
    'Authorization': 'Bearer ' + accessToken,
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  }),
  body: JSON.stringify(metadata),
}).then((res) => {
  return res.json();
}).then(function(val) {
  console.log(val);
});

参考: