设置权限 'sendNotificationEmails': 'false' 以避免 "message" 的正确语法是什么:“超出速率限制。用户消息:

What Is it the correct syntax to set permission 'sendNotificationEmails': 'false' to avoid "message" : "Rate limit exceeded. User message:

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'
        });
    }
  });

我收到以下错误:google 驱动器 API 文档没有详细说明 much.here 是我收到的错误。 类型错误:drive.permissions.insert 不是 async.eachSeries

处的函数

我相信你的目标如下。

  • 您想使用 sendNotificationEmail: false 权限:创建方法。
  • 您想使用带有 Node.js 的 googleapis 来实现此目的。
  • 您已经能够使用 Drive API v3.
  • 创建权限

修改点:

  • drive.permissions.insert 适用于驱动器 API v2。在这种情况下,当您 运行 脚本时,会发生错误。为了使用sendNotificationEmail: false,请使用到drive.permissions.create.
  • 关于Rate limit exceeded,当permissions的数组长度较大时,可能会出现这样的错误。因此,首先,作为测试,如何使用简单的情况检查请求是否有效。在您问题的示例脚本中,使用了 1 的数组长度。我认为使用它检查请求怎么样?
  • 在您的情况下,可以通过 res.data.id 检索权限 ID。
  • 在您的脚本中,rootFolderId 用于 var fileId = rootFolderId;。当rootFolderId 为根文件夹ID 时,会出现类似This file is never writable. 的错误。所以请注意这一点。

当以上几点反映到你的脚本中,就会变成下面这样。

修改后的脚本:

const drive = google.drive({version: "v3", auth});

var fileId = "###"; // Please set the file ID or folder ID.

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",
        sendNotificationEmail: false,  // <--- Added
      },
      (err, res) => {
        if (err) {
          // Handle error...
          console.error(err);
          permissionCallback(err);
        } else {
          console.log("Permission ID: " + res.data.id);  // <--- Modified
          permissionCallback();
        }
      }
    );
  },
  (err) => {
    if (err) {
      // Handle error
      console.error(err);
    } else {
      console.log("Done");  // <--- Modified
    }
  }
);

参考: