Объект «Рабочий лист» не имеет атрибута «Электронные таблицы» - PullRequest
0 голосов
/ 04 апреля 2020

Это мой первый раз, когда я работаю с API листов Google. Итак, я пытаюсь выделить первый ряд в листе Google. Но я получаю сообщение об ошибке Объект «Рабочий лист» не имеет при этом атрибута «Электронные таблицы» . Я упомянул код ниже. Пожалуйста, укажите, что я делаю неправильно.

import gspread
from oauth2client.service_account import ServiceAccountCredentials
from pprint import pprint
scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/spreadsheets",
         "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_name("credentials.json",scope)

client = gspread.authorize(creds)
sheet = client.open("SheetsAPI Practice").sheet1

req = { "repeatCell": {
        "range": {
            "sheetId": 0,
            "startRowIndex": 0,
            "endRowIndex": 1
        },
        "cell": {
            "userEnteredFormat": {
                "textFormat": {
                    "bold": True        
                }
            }
        },
        "fields": "userEnteredFormat.textFormat.bold"
    }
}

sheet.spreadsheets().batchUpdate(spreadsheetId=sheet.id,body=req).execute()

В этой строке произошла ошибка -

sheet.spreadsheets (). BatchUpdate (spreadsheetId = sheet.id, body = req) .execute ()

1 Ответ

1 голос
/ 05 апреля 2020
  • Вы хотите использовать метод batchUpdate в Sheets API.
  • Вы хотите добиться этого с помощью gspread с python.
  • Вы уже смогли получить и введите значения для Google Spreadsheet.

Если я правильно понял, как насчет этого ответа? Пожалуйста, подумайте об этом, как об одном из нескольких возможных ответов.

Точки модификации:

  • В общем, нет метода spreadsheets() в client.open("SheetsAPI Practice").sheet1. В вашем скрипте вы пытаетесь использовать метод googleapis python с gspread. Причина сообщения об ошибке заключается в следующем.
  • У gspread есть метод для использования batchUpdate в Sheets API. Таким образом, вы можете использовать это, когда client = gspread.authorize(creds) можно использовать для таблицы Google, которую вы хотите использовать.
  • Ваше тело запроса необходимо изменить. Когда вы используете req для метода batchUpdate, добавьте в массив, например, {"requests": [req]}.

Когда указанные выше точки отражаются в вашем скрипте, это выглядит следующим образом.

Модифицированный скрипт:

С:
sheet = client.open("SheetsAPI Practice").sheet1

req = { "repeatCell": {
        "range": {
            "sheetId": 0,
            "startRowIndex": 0,
            "endRowIndex": 1
        },
        "cell": {
            "userEnteredFormat": {
                "textFormat": {
                    "bold": True
                }
            }
        },
        "fields": "userEnteredFormat.textFormat.bold"
    }
}

sheet.spreadsheets().batchUpdate(spreadsheetId=sheet.id,body=req).execute()
Кому:
spreadsheet = client.open("SheetsAPI Practice")
req = {
    "requests": [
      {
          "repeatCell": {
              "range": {
                  "sheetId": 0,
                  "startRowIndex": 0,
                  "endRowIndex": 1
              },
              "cell": {
                  "userEnteredFormat": {
                      "textFormat": {
                          "bold": True
                      }
                  }
              },
              "fields": "userEnteredFormat.textFormat.bold"
          }
      }
    ]
}
spreadsheet.batch_update(req)
  • При запуске этого модифицированного скрипта тексты 1-й строки становятся жирным шрифтом.

Примечание:

  • В этом измененном сценарии предполагается, что таблица Google может использоваться учетной записью службы. Пожалуйста, будьте осторожны с этим.

Ссылки:

Если я неправильно понял ваш вопрос, и это не то направление, в котором вы хотите, прошу прощения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...