未为节点中的文件返回 googleapis "appProperties" 字段

googleapis "appProperties" field not being returned for files in node

我正在尝试让 appProperties 字段与我在 gdrive 上的文件一起 returned,但目前无法正常工作。

"googleapis": "^29.0.0"

这是我的范围和字段:

scopes: [
    "https://www.googleapis.com/auth/drive",
    "https://www.googleapis.com/auth/drive.file",
    "https://www.googleapis.com/auth/drive.metadata.readonly"
  ]

fields = ["id", "name", "mimeType", "parents", "description", "modifiedTime", "appProperties"]

所有其他属性都可以使用 drive.files.list 返回,但不会 return appProperties 字段。

 getFilesByQuery: function( queryString , extraFields ){

    var fields = ["id", "name", "mimeType", "parents", "description", "modifiedTime", "appProperties"];
    if( extraFields && extraFields.length )
      fields = fields.concat( extraFields );

    return drive.files.list({
      'pageSize': 200,
      'fields': `nextPageToken, files(${ fields.join(', ') })`,
      'q': queryString
    });
  }

当我在 dev.google API 上直接通过 files/get 查询时,这就是我为该文件返回的内容:

{
 "name": "US",
 "appProperties": {
  "order": "1"
 }
}

有什么想法吗?

谢谢!

在我的环境中,我确认可以使用带有 v29.0.0 的 googleapis 的 files.listfiles.get 检索 appProperties。我考虑了您的情况的原因的可能性。那么您能否确认以下几点?

我看了Custom File Properties的文档,是这样说的

Properties are accessed using the properties (visible to all apps) and appProperties (restricted to single apps) fields on files

我对此进行了调查。作为示例,它假设 {"key1": "value1"}client_id_A.

写入了 appPropertiesproperties
  • 对于appProperties,读取appProperties时,只有与写入appProperties时使用的客户端ID相同的客户端ID才能读取。
    • 即,当使用从client_id_B获取的访问令牌时,它无法读取[=69=写入的appProperties ].
  • 对于properties,读取properties时,可以通过各种客户端ID读取。
    • 即,即使使用从client_id_B获取的access token,也可以读取[=69写的properties =].

根据这些结果,appPropertiesproperties 可以分别用作 "Private" 和 "Public"。

用这个,你能再确认一下你的情况吗?如果你会写appProperties使用node.js,你可以使用下面的脚本。由此,您可以确认您可以使用相同的客户端 ID 写入和读取 appProperties

drive.files.update({
  fileId: "### file ID ###",
  resource: {"appProperties": {"key": "value"}},
  fields: 'id,appProperties',
});

如果这对您的情况没有用,我很抱歉。