ठीक है, मैंने अंत में बैच अनुरोध का उपयोग किया। विचार एक एपीआई अनुरोध में कई बदलाव भेजने के लिए है।
सबसे पहले, मैं शब्दकोशों की एक सूची है, जो पंक्ति R
और स्तंभ C
पर सेल का मान प्राप्त करने के लिए rows_map[R][C]
की तरह इस्तेमाल किया जाएगा बनाया।
rows_map = [
{
1: row['first_column']
2: row['second']
3: row['and_last']
}
for row i rows
]
तब मैं कार्यपत्रक
query = gdata.spreadsheet.service.CellQuery()
query.return_empty = 'true'
cells = _api_client.GetCellsFeed(self._key, wksht_id=self._raw_events_worksheet_id, query=query)
से सभी कोशिकाओं मिल और एक समय में एकाधिक कोशिकाओं को संशोधित करने के बैच अनुरोध पैदा करते हैं।
batch_request = gdata.spreadsheet.SpreadsheetsCellsFeed()
तब मैं संशोधित कर सकते हैं (या मेरे मामले में सभी मूल्यों को फिर से लिखने) स्प्रेडशीट।
for cell_entry in cells.entry:
row = int(cell_entry.cell.row) - 2
col = int(cell_entry.cell.col)
if 0 <= row < len(events_map):
cell_entry.cell.inputValue = rows_map[row][col]
else:
cell_entry.cell.inputValue = ''
batch_request.AddUpdate(cell_entry)
और केवल एक अनुरोध में सभी परिवर्तनों भेजें:
_api_client.ExecuteBatch(batch_request, cells.GetBatchLink().href)
नोट:
बैच अनुरोध केवल सेल प्रश्नों के साथ संभव हो रहे हैं। सूची प्रश्नों के साथ उपयोग करने के लिए ऐसी कोई व्यवस्था नहीं है।
query.return_empty = 'true'
अनिवार्य है। अन्यथा एपीआई केवल उन कोशिकाओं को वापस कर देगा जो खाली नहीं हैं।
एपीआई में "बैच अपडेट" है, मैंने इसे जावा के साथ उपयोग किया है, लेकिन पायथन संस्करण को नहीं देखा है। – eddyparkinson