使用 Javascript 在 google 驱动器中的现有文件夹中创建一个文件夹

creating a folder inside existing folder in google drive using Javascript

我正在使用 asp.net mvcjavascript 创建一个应用程序,我想在其中创建现有 google 驱动器文件夹中的文件夹。

下面是我从 Whosebug 获得的代码

function createFolder() {
    var body = {
        'title': document.getElementById('txtFolderName').value,
        'mimeType': "application/vnd.google-apps.folder"
    };

    var request = gapi.client.drive.files.insert({
        'resource': body
    });

    request.execute(function (resp) {
        console.log('Folder ID: ' + resp.id);
    });
}

我收到以下错误

index.html:61 Uncaught TypeError: Cannot read properties of undefined (reading 'files')

下一行

var request = gapi.client.drive.files.insert({

此处 gapi.client.drive 似乎未定义

下面是我用于验证和加载 google api 客户端的代码

function authenticate(callback) {
    return gapi.auth2.getAuthInstance()
        .signIn({ scope: "https://www.googleapis.com/auth/documents https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.file" })
        .then(function () {
            console.log("Sign-in successful");
            callback == undefined ? '' : callback();
        },
            function (err) {
                console.error("Error signing in", err);
            });
}
function loadClient() {
    gapi.client.setApiKey("APIKEY");
    return gapi.client.load("https://docs.googleapis.com/$discovery/rest?version=v1")
        .then(function () {
            console.log("GAPI client loaded for API");
        },
            function (err) {
                console.error("Error loading GAPI client for API", err);
            });
}

这里有什么问题?

如果我想在另一个文件夹中创建一个文件夹,我需要做什么?

提前致谢

我认为在您的脚本中,gapi.client.load("https://docs.googleapis.com/$discovery/rest?version=v1")https://docs.googleapis.com/$discovery/rest?version=v1 用于 Google Docs API v1。我认为您的 Uncaught TypeError: Cannot read properties of undefined (reading 'files') 错误消息的原因是由于此。

在您的目标中,您似乎希望将文件夹创建到特定文件夹中。在这种情况下,请使用驱动器 API。但是,当我看到您当前用于创建文件夹的脚本时,使用了 Drive API v2。所以,请修改如下。

发件人:

return gapi.client.load("https://docs.googleapis.com/$discovery/rest?version=v1")

收件人:

return gapi.client.load("https://www.googleapis.com/discovery/v1/apis/drive/v2/rest")
  • 通过这个修改,我认为你的 createFolder() 有效。但是在您当前的 createFolder() 中,该文件夹被创建到根文件夹。当您想将文件夹创建到特定文件夹时,请修改请求体如下。

      var body = {
        'title': document.getElementById('txtFolderName').value,
        'mimeType': "application/vnd.google-apps.folder",
        'parents': [{'id': '###folderId###'}]
      };
    

注:

  • 补充说明,如果要使用Drive API v3,请修改如下。

    • 来自

        return gapi.client.load("https://docs.googleapis.com/$discovery/rest?version=v1")
      
    •   return gapi.client.load("https://www.googleapis.com/discovery/v1/apis/drive/v3/rest")
      
    • 并且,请修改createFolder()如下。

        var body = {
          'name': document.getElementById('txtFolderName').value,
          'mimeType': "application/vnd.google-apps.folder",
          'parents': ['###folderId###']
        };
      
        var request = gapi.client.drive.files.create({ 'resource': body });
      

参考文献: