Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新谷歌电子表格单元格(python)_Python_Google Sheets_Google Sheets Api - Fatal编程技术网

更新谷歌电子表格单元格(python)

更新谷歌电子表格单元格(python),python,google-sheets,google-sheets-api,Python,Google Sheets,Google Sheets Api,我读过类似的文章,但我无法解决我的问题,谷歌文档也不是100%有用,因为它们没有提供真实的例子 问题是我正面临谷歌表单的问题。我想做的是更新谷歌表格中的单元格。基本上,我读了一张工作表,如果某个特定的列没有特定的单词/状态,我会使用selenium进行自动化,我不会向您展示这一步,因为这并不重要,一旦完成,我会在我的Google工作表中的一列中写下“OK”一词。此列为空或上面写有“OK”字样。我能够阅读工作表并进行自动化操作,但在尝试更新工作表时出错 这是我的代码,基本上是谷歌的代码: SCOP

我读过类似的文章,但我无法解决我的问题,谷歌文档也不是100%有用,因为它们没有提供真实的例子

问题是我正面临谷歌表单的问题。我想做的是更新谷歌表格中的单元格。基本上,我读了一张工作表,如果某个特定的列没有特定的单词/状态,我会使用selenium进行自动化,我不会向您展示这一步,因为这并不重要,一旦完成,我会在我的Google工作表中的一列中写下“OK”一词。此列为空或上面写有“OK”字样。我能够阅读工作表并进行自动化操作,但在尝试更新工作表时出错

这是我的代码,基本上是谷歌的代码:

SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
SPREADSHEET_ID = '1cuT66AD3TBQ-1IWCisB0pUPzlw-iOuuU7vO2TqRj3bQ' #control seguimiento robot
WORKSHEET_NAME = 'PRUEBAS DAVID cambio estado TAS'

async def leerGoogleSheet():
    creds = None
   
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            # pass
            flow = InstalledAppFlow.from_client_secrets_file(
                'client_secret.json', SCOPES)
            creds = flow.run_local_server(port=0)

        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

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

    sheet = service.spreadsheets()
    result = sheet.values().get(spreadsheetId=SPREADSHEET_ID,
                                range=WORKSHEET_NAME).execute()
    values = result.get('values', [])

    print('result: ' + str(result))
    print('range: ' + str(range))

    print('values: ' + str(result['values']))
   
    print('WO: ' + str(result['values'][1][1]))
   
    if not values:
        print('No data found.')
        print(traceback)
    else:
       
        losDatos = []
       
        for row in range(1, len(values)):
            # print('num_fila:' +str(num_fila))
        
            if 'TAS' in values[row][0]:
                if values[row][11] == 'Pendiente':
                    try:
                        if values[row][12]:
                            print('ya tiene valor OK')
                            pass
                    except:
                        print('Hay TAS')
                        datos = []
                        datos.append(values[row][0]) #tas
                        datos.append(values[row][1]) #wo
                        datos.append(row)

                        losDatos.append(datos)
                        await escribirEnSheet(service, row)

            else:
                print('No hay TAS')

        print(losDatos)


    #CAMBIAR ESTADO

    
async def escribirEnSheet(service, row):
    range_ = 'M'+str(row) 
        
    value_input_option = 'RAW'  # TODO: Update placeholder value.

    values = ['OK']
    value_range_body = {'values': values,
    'majorDimension' : 'COLUMNS'}

    print('voy a hacer la request para escribir')
   
    request = service.spreadsheets().values().update(spreadsheetId=SPREADSHEET_ID, range=range_, valueInputOption=value_input_option, body=value_range_body)
    response = request.execute()
    print('ya he escrito')
这就是我得到的错误:

googleapiclient.errors.HttpError: <HttpError 400 when requesting https://sheets.googleapis.com/v4/spreadsheets/1cuT66AD3TBQ-1IWCisB0pUPzlw-iOuuU7vO2TqRj3bQ/values/M2?valueInputOption=RAW&alt=
json returned "Invalid value at 'data.values' (type.googleapis.com/google.protobuf.ListValue), "OK"". Details: "[{'@type': 'type.googleapis.com/google.rpc.BadRequest', 'fieldViolations': [{'f
ield': 'data.values', 'description': 'Invalid value at \'data.values\' (type.googleapis.com/google.protobuf.ListValue), "OK"'}]}]">
尝试了不同的“配置”,但不知道如何修复,看起来不错


提前谢谢

这次修改怎么样

在这种情况下,请使用二维数组作为值。我认为您的错误消息的原因是由于这一点。因此,请修改如下并再次测试

发件人: 致: 参考:
这次修改怎么样

在这种情况下,请使用二维数组作为值。我认为您的错误消息的原因是由于这一点。因此,请修改如下并再次测试

发件人: 致: 参考:
最后一个问题@Tanaike。。。如何在本例中添加背景色?我看过这篇文章[我知道我必须在我的价值观中添加背景,但正确的方法是什么?@dtamab感谢您的回答。我很高兴您的问题得到解决。我愿意支持您。但是您的评论问题是新问题,与您的问题不同。因此,您可以通过包含详细信息将其作为新问题发布吗ion?因为当你的初始问题被评论更改时,其他看到你的问题的用户会感到困惑。通过将其作为新问题发布,包括我在内的用户可以想到你的新问题。如果你能合作解决你的新问题,我很高兴。你是对的@Tanaike。我为此发布了一个问题,谢谢!最后一个问题@Tanaike…如何我可以在这个例子中添加背景色吗?我看过这篇文章[我知道我必须在我的价值观中添加背景,但正确的方法是什么?@dtamab感谢您的回答。我很高兴您的问题得到解决。我愿意支持您。但是您的评论问题是新问题,与您的问题不同。因此,您可以通过包含详细信息将其作为新问题发布吗ion?因为当你的初始问题被评论更改时,看到你的问题的其他用户会感到困惑。通过将其作为新问题发布,包括我在内的用户可以想到你的新问题。如果你能合作解决你的新问题,我很高兴。你是对的@Tanaike。我为此发布了一个问题,谢谢!
value_range_body = {'values': values,
    'majorDimension' : 'COLUMNS'}
values = ['OK']
values = [['OK']]