Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 25 additions & 3 deletions pygsheets/sheet.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,34 @@ def set_batch_mode(self, mode):
self.batch_mode = mode
self.batched_requests = dict()

def run_batch(self):
for ss, req in self.batched_requests.items():
def run_batch(self, verbose=False, _return_list_if_single=False):
Comment thread
nithinmurali marked this conversation as resolved.
Outdated
"""Run all batched_requests, then set self.batched_requests = dict().
Runs requests "one spreadsheet at a time".
Total number of calls to API service equals number of different spreadsheets.

:param verbose: whether to print
:param _return_list_if_single: whether to return list if only one spreadsheet in batched_requests

returns a list of dicts {spreadsheetId: ..., replies: [...]},
with one dict for each spreadsheet.

_return_list_if_single: bool, default False
returns
"""
result = []
items = self.batched_requests.items()
for i, (ss, req) in enumerate(items):
if verbose: print('updating sheet {i} of {L}'.format(i=i+1, L=len(items)), end='\r')
body = {'requests': req}
request = self.service.spreadsheets().batchUpdate(spreadsheetId=ss, body=body)
return self._execute_requests(request)
reply = self._execute_requests(request)
result.append(reply)
if verbose: print('completed!' + ' '*30, end='\r')
self.batched_requests = dict()
if _return_list_if_single and len(result)==1:
return result[0]
else:
return result

def batch_update(self, spreadsheet_id, requests, **kwargs):
"""
Expand Down