【问题标题】:Create a Drive File with a set locale in international settings through Drive API通过 Drive API 在国际设置中创建具有设置区域设置的 Drive 文件
【发布时间】:2019-01-08 10:02:49
【问题描述】:

我需要使用 Google Drive API 创建一个文件(我使用的是 v3,目前是最新版本)。如果重要,请使用 python。

我的代码如下,

drive_service.files().create(supportsTeamDrives=True, body={
                    'name': 'test-file',
                    'mimeType': 'application/vnd.google-apps.spreadsheet',
                    'parents': [folder_id],
                    'properties': {'locale': 'en_GB',
                                   'timeZone': 'Europe/Berlin'}
                })

按照文档@here,我尝试将properties 键设置为所需的区域设置,但它继续使用我帐户的默认区域设置创建文件。

我怎样才能让它在创建时工作?有没有其他参数可以填?

【问题讨论】:

  • 我不确定我是否理解这个问题。你能举一个你认为错误的例子吗?
  • 创建文件时,属性不是我在代码中指定的,而是默认的
  • 您查看的是最新上传的文件,而不是您之前上传的文件?
  • 是的,之前没有上传文件,只有我正在创建的文件
  • 是的,但是每次你运行它都会创建一个你理解的新文件。我仍然不明白您所说的不包含您要查找的数据的确切位置。你在找驱动器吗?你在做一个file.get吗?你只是在检查响应吗?

标签: python google-api google-drive-api google-api-python-client google-drive-shared-drive


【解决方案1】:

您的问题是您混淆了两个不同的“属性”。

您设置的属性是用户定义的属性,这些属性只能由您自己使用。它们对 Google 没有意义。

您要设置的属性是电子表格 API 的一部分。见https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets#SpreadsheetProperties

最简单的解决方案是不使用 Drive API 创建电子表格。而是使用 https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/create 描述的电子表格 API

【讨论】:

  • 这确实有效,我混淆了这两个“属性”,认为它们会产生相同的效果,但是电子表格 API 似乎不允许您指定创建文件的文件夹,我解决了通过创建它然后通过 Drive API 移动它
  • 或者,要修复已经存在的电子表格,可以发出 batchUpdate 请求,以 {"requests": [{"updateSpreadsheetProperties": {"properties": {"locale": locale}, "fields": "locale"}}]} 作为其主体。
【解决方案2】:

我刚刚在 Apis Explorer 中测试过这个

创建文件请求

POST https://www.googleapis.com/drive/v3/files?key={YOUR_API_KEY}

{
 "properties": {
  "test": "test"
 },
 "name": "Hello"
}

回应

{    

 "kind": "drive#file",
 "id": "1CYFI5rootSO5cndBD2gFb1n8SVvJ7_jo",
 "name": "Hello",
 "mimeType": "application/octet-stream"
}

文件获取请求

GET https://www.googleapis.com/drive/v3/files/1CYFI5rootSO5cndBD2gFb1n8SVvJ7_jo?fields=*&key={YOUR_API_KEY}

回应

 "kind": "drive#file",
 "id": "1CYFI5rootSO5cndBD2gFb1n8SVvJ7_jo",
 "name": "Hello",
 "mimeType": "application/octet-stream",
 "starred": false,
 "trashed": false,
 "explicitlyTrashed": false,
 "parents": [
  "0AJpJkOVaKccEUk9PVA"
 ],
 "properties": {
  "test": "test"
 },

它似乎工作得很好,我建议您尝试检查以下内容:

  • 在创建文件的响应中返回的文件 ID。以确保您正在检查您刚刚上传的那个。每次运行时都不会创建一个新文件。
  • 如果您使用 file.get 来检查您的属性的结果,请记住添加 fields=*file.get

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多