使用Python更新电子表格单元格的值

时间:2020-03-28 21:58:38

标签: python api google-sheets-api

我正在尝试用Python更新值,这是我的代码:

from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

global values
global sheet
global SAMPLE_SPREADSHEET_ID
global SAMPLE_RANGE_NAME

def connexion():
    # Some code ...
    # Call the Sheets API
    return service.spreadsheets()

def update(values, sheet, SAMPLE_SPREADSHEET_ID, SAMPLE_RANGE_NAME):
    body = {
        'values': values
    }
    result = sheet.values().update(
    spreadsheetId=SAMPLE_SPREADSHEET_ID, range=SAMPLE_RANGE_NAME, valueInputOption='USER_ENTERED', body=body).execute()
    if str(result.get('updatedCells')) != 0:
        return True
    return False

sheet = connexion()
values = sheet.values().get(spreadsheetId=SAMPLE_SPREADSHEET_ID, range=SAMPLE_RANGE_NAME).execute().get('values', [])
for line in values:
    if line[3] == 'Hi !':
        line[5] == 'hello'
if update(values, sheet, SAMPLE_SPREADSHEET_ID, SAMPLE_RANGE_NAME):
    print('   Update ok')
else:
    print('   Error')

我没有任何错误,但是打印了“ Update ok”。但是,第6个单元格行[5]中的值未更新...请问如何执行此操作?谢谢!

1 个答案:

答案 0 :(得分:1)

此修改如何?

当脚本中的sheet变量可用于获取值并将其放入Google Spreadsheet时,我认为您的大多数脚本都是正确的。我认为只有一个修改点。将line[5]的值与hello处的line[5] == 'hello'进行比较。这样,hello就不会放入line[5]。我认为您的问题的原因是这样的。因此,请进行如下修改。

发件人:

line[5] == 'hello'

收件人:

line[5] = 'hello'

注意:

  • 在此修改中,它假设从values检索的sheet.values().get()的列大于6。

如果这不是直接解决方案,我深表歉意。