【问题标题】:how to solve "'Resource' object has no attribute 'service' " in python , google api如何在python,google api中解决“'Resource'对象没有属性'service'”
【发布时间】:2021-11-18 03:07:49
【问题描述】:

我正在尝试使用 google api 创建一个项目。在那个项目中,我给出了一个字符串,python 脚本应该更改/修改谷歌表中的一个单元格并更改该字符串的单元格的值。但问题是有错误-

request = sheet.service.spreadsheets().values().update(spreadsheetId=SAMPLE_SPREADSHEET_ID, AttributeError: 'Resource' object has no attribute 'service' 我该怎么办?

这里是代码 -

from __future__ import print_function
from googleapiclient.discovery import build

from google.oauth2 import service_account

SERVICE_ACCOUNT_FILE = 'python-sheets-keys.json'
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
creds = None
creds = service_account.Credentials.from_service_account_file(
       SERVICE_ACCOUNT_FILE, scopes=SCOPES)

# If modifying these scopes, delete the file token.json.

# The ID of the spreadsheet.
SAMPLE_SPREADSHEET_ID = '14uNIk1Q_jNKRL-yuz5Fssu3iVsQzmYf6wHXZDnjWkW0'


service = build('sheets', 'v4', credentials=creds)

# Call the Sheets API
sheet = service.spreadsheets()
result = sheet.values().get(spreadsheetId=SAMPLE_SPREADSHEET_ID,                           range="test!A1:B10").execute()
values = result.get('values', [])

value_for_write = [("present")]

request = sheet.service.spreadsheets().values().update(spreadsheetId=SAMPLE_SPREADSHEET_ID,
                           range="Sheet2!A1", valueInputOption="USER_ENTERED", body={"values":value_for_write}).execute()

print(values)

【问题讨论】:

    标签: python google-sheets google-sheets-api


    【解决方案1】:

    如下修改怎么样?

    发件人:

    value_for_write = [("present")]
    
    request = sheet.service.spreadsheets().values().update(spreadsheetId=SAMPLE_SPREADSHEET_ID,
                               range="Sheet2!A1", valueInputOption="USER_ENTERED", body={"values":value_for_write}).execute()
    

    收件人:

    value_for_write = [["present"]]
    request = sheet.values().update(spreadsheetId=SAMPLE_SPREADSHEET_ID, range="Sheet2!A1", valueInputOption="USER_ENTERED", body={"values":value_for_write}).execute()
    
    • 在您的脚本中,使用了sheet = service.spreadsheets()。所以我用了它。
    • {"values":value_for_write}value_for_writesheet.values().update 必须是二维数组。

    参考:

    【讨论】:

    • @Scarlett 感谢您的回复。很高兴您的问题得到解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 2017-12-07
    • 2017-11-08
    • 2021-11-08
    • 2021-07-09
    • 2017-11-01
    • 1970-01-01
    相关资源
    最近更新 更多