设置权限'sendNotificationEmails':'false'以避免“ message”:“超出速率限制。”用户消息:

时间:2020-07-02 05:59:56

标签: node.js google-api google-drive-api google-api-nodejs-client

function createPermissionOffic(auth){
  const drive = google.drive({version: 'v3', auth});

  var fileId = rootFolderId;
  var permissions = [
    {
      'type': 'user',
      'role': 'writer',
      'emailAddress': 'someemailaddress@gmail.com'
    }
  ];
  // Using the NPM module 'async'
  async.eachSeries(permissions, (permission, permissionCallback)=> {
    drive.permissions.create({
      resource: permission,
      fileId: fileId,
      fields: 'id',
    }, (err, res)=> {
      if (err) {
        // Handle error...
        console.error(err);
        permissionCallback(err);
      } else {
        console.log('Permission ID: '+ res)
        permissionCallback();
      }
    });
  }, (err)=> {
    if (err) {
      // Handle error
      console.error(err);
    } else {
      // All permissions inserted
      drive.permissions.insert(
        {
          'sendNotificationEmails': 'false'
        });
    }
  });

我遇到了以下错误:谷歌驱动器API文档没有太多详细说明。这是我得到的错误。 TypeError:drive.permissions.insert不是async.eachSeries上的函数

1 个答案:

答案 0 :(得分:2)

我相信您的目标如下。

  • 您要使用sendNotificationEmail: false获得权限:创建方法。
  • 您要使用带有Node.js的googleapis实现此目的。
  • 您已经可以使用Drive API v3创建权限。

修改点:

  • drive.permissions.insert用于Drive API v2。并且在这种情况下,运行脚本时会发生错误。为了使用sendNotificationEmail: false,请将其用于drive.permissions.create
  • 关于Rate limit exceeded,当permissions的数组长度很大时,可能会发生这种错误。因此,首先,作为测试,如何使用简单的情况检查请求是否有效。在问题的示例脚本中,使用了1的数组长度。我认为如何使用它检查请求?
  • 您的情况是,{@ {1}}可以检索权限ID。
  • 在您的脚本中,res.data.id使用rootFolderId。当var fileId = rootFolderId;是根文件夹ID时,会发生类似rootFolderId的错误。所以请注意这一点。

当以上几点反映到您的脚本时,它如下所示。

修改后的脚本:

This file is never writable.

参考:

相关问题