Создайте файл на Диске с установленной локалью в международных настройках через Drive API.

Мне нужно создать файл с помощью 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'}
                })

Следуя документации @здесь, я попытался установить properties ключ с локалью, установленной на желаемую, но он продолжает создавать файл с локалью по умолчанию моей учетной записи.

Как я могу заставить его работать во время создания? есть ли другой параметр, который я могу заполнить?


person Nicolò Gasparini    schedule 08.01.2019    source источник
comment
Я не уверен, что понимаю проблему. Можете ли вы показать пример того, что вы считаете неправильным?   -  person DaImTo    schedule 08.01.2019
comment
Когда он создает файл, свойства не те, которые я указал в коде, а те, что по умолчанию   -  person Nicolò Gasparini    schedule 08.01.2019
comment
И вы проверяете самый новый загруженный файл, а не тот, который вы загрузили ранее?   -  person DaImTo    schedule 08.01.2019
comment
Да, раньше не было загруженного файла, только тот, который я создаю   -  person Nicolò Gasparini    schedule 08.01.2019
comment
Да, но каждый раз, когда вы запускаете это, он будет создавать новый файл, который вы понимаете. Я до сих пор не понимаю, где именно вы говорите, что не содержит данных, которые вы ищете. ты на драйве ищешь? вы делаете файл .get? ты просто проверяешь ответ?   -  person DaImTo    schedule 08.01.2019
comment
Файл создавался, но, как предположил @pinoyyid, свойства, которые я хотел установить, которые я проверил, просмотрев созданный файл, не были теми, которые я устанавливал. Как и в вашем ответе, эти свойства были установлены, но не те, которые я хотел.   -  person Nicolò Gasparini    schedule 09.01.2019


Ответы (2)


Ваша проблема в том, что вы смешиваете два разных «свойства».

Свойства, которые вы устанавливаете, являются определяемыми пользователем свойствами, которые когда-либо используются только вами самими. Они не имеют значения для Google.

Свойства, которые вы хотите установить, являются частью API электронных таблиц. См. https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets#SpreadsheetProperties

Самое простое решение — не использовать Drive API для создания электронной таблицы. Вместо этого используйте API электронных таблиц, как описано https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/create

person pinoyyid    schedule 08.01.2019
comment
Это действительно работает, я перепутал два свойства, думая, что они будут иметь одинаковый эффект, однако кажется, что API электронных таблиц не позволяет вам указать папку, в которой нужно создать файл, я решил эту проблему, создав ее, а затем переместив через Drive API - person Nicolò Gasparini; 09.01.2019
comment
В качестве альтернативы, чтобы исправить уже существующую электронную таблицу, можно выполнить запрос batchUpdate с {"requests": [{"updateSpreadsheetProperties": {"properties": {"locale": locale}, "fields": "locale"}}]} в качестве тела. - person Nickolay; 06.06.2021

Я только что проверил это в nofollowApiferrer

Создать запрос файла

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"
 },

Похоже, он работает нормально, я предлагаю вам попробовать проверить следующее:

  • Идентификатор файла, возвращаемый в ответе на создание файла. Чтобы убедиться, что вы проверяете тот, который вы только что загрузили. Каждый раз, когда вы запускаете это, вы не будете создавать новый файл.
  • Также не забудьте добавить fields=* к file.get, если это то, что вы используете для проверки результата ваших свойств.
person DaImTo    schedule 08.01.2019