我正在尝试用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]中的值未更新...请问如何执行此操作?谢谢!
答案 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。如果这不是直接解决方案,我深表歉意。