问题描述:

I have been trying to figure this out for a while now and just dont seem to be able to break through so hopefully someone out there has done this before.

My issue is that I am trying to do a batch update of a google spreadsheet using the gdata python client libraries and authenticating via oauth2. I have found an example of how to do the batch update using the gdata.spreadsheet.service module here: https://code.google.com/p/gdata-python-client/wiki/UsingBatchOperations

However that does not seem to work when authenticating via oauth2 and so I am having to use the gdata.spreadsheets.client module instead as discussed in this post: https://code.google.com/p/gdata-python-client/issues/detail?id=549

Using the gdata.spreadsheets.client module works for authentication and for updating the sheet however batch commands does not seem to work. Below is my latest variation of the code which is about the closest I have got. It seems to work but the sheet is not updated and the batch_status returned is: 'Insert not supported on batch.' (Note: I did try modifying the batch_operation and batch_id parameters of the CellEntries in the commented out code but this did not work either.)

Thanks for any help you can provide.

 import gdata

import gdata.gauth

import gdata.service

import gdata.spreadsheets

import gdata.spreadsheets.client

import gdata.spreadsheets.data

token = gdata.gauth.OAuth2Token(client_id=Client_id,client_secret=Client_secret,scope=Scope,

access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN,

user_agent=User_agent)

client = gdata.spreadsheets.client.SpreadsheetsClient()

token.authorize(client)

range = "D6:D13"

cellq = gdata.spreadsheets.client.CellQuery(range=range, return_empty='true')

cells = client.GetCells(file_id, 'od6', q=cellq)

objData = gdata.spreadsheets.data

batch = objData.BuildBatchCellsUpdate(file_id, 'od6')

n = 1

for cell in cells.entry:

cell.cell.input_value = str(n)

batch.add_batch_entry(cell, cell.id.text, batch_id_string=cell.title.text, operation_string='update')

n = n + 1

client.batch(batch, force=True)

相关阅读:
Top