@@ -283,10 +283,17 @@ def copy_folder(source_folder_id: str, dest_parent_id: str = None):
283283def replace_links_in_doc (docid : str ):
284284 doc = gdrive .docs ().get (documentId = docid ).execute ()
285285 print (f"Replacing links in { doc ['title' ]} ..." )
286- content = doc [ 'body' ][ 'content' ]
286+ elements = [ ]
287287 requests = []
288- for block in content :
288+ for block in doc ['body' ]['content' ]:
289+ for row in block .get ('table' , {}).get ('tableRows' , []):
290+ for cell in row .get ('tableCells' , []):
291+ for cellcontent in cell .get ('content' , []):
292+ for element in cellcontent .get ('paragraph' , {}).get ('elements' , []):
293+ elements .append (element )
289294 for element in block .get ('paragraph' , {}).get ('elements' , []):
295+ elements .append (element )
296+ for element in elements :
290297 linkurl = element .get ('textRun' , {
291298 }).get ('textStyle' ,{
292299 }).get ('link' ,{
@@ -316,8 +323,13 @@ def replace_links_in_doc(docid: str):
316323 print (" Making changes..." )
317324 gdrive .docs ().batchUpdate (documentId = docid , body = {'requests' :requests }).execute ()
318325
319- def replace_links_across_all_docs ():
320- for document in gdrive .all_files_matching ("mimeType='application/vnd.google-apps.document' and 'me' in owners" , "id,name" ):
326+ def replace_links_across_all_docs (partialname : str = None ):
327+ query = "mimeType='application/vnd.google-apps.document' and 'me' in owners"
328+ if partialname :
329+ query += f" and name contains '{ partialname } '"
330+ for document in gdrive .all_files_matching (query , "id,name" ):
331+ if partialname not in document ['name' ]:
332+ continue
321333 try :
322334 replace_links_in_doc (document ['id' ])
323335 except :
@@ -344,6 +356,34 @@ def find_unmigrated_folders():
344356 if folder ['trashed' ]:
345357 print (f"ERROR! Folder { folder ['id' ]} is trashed!" )
346358
359+ def update_pkl_filenames ():
360+ def new_batch ():
361+ return gdrive .BatchHttpRequest (
362+ callback = lambda gid , ret , errror : print (f"Renamed { gid } " ),
363+ batch_uri = "https://www.googleapis.com/batch/drive/v3"
364+ )
365+ batch = new_batch ()
366+ for doc in gdrive .all_files_matching ("'1b1dOGh-fmbOhmwoPEnUgDehpqnQhOJ8Z' in parents and trashed=false" , "id,name" ):
367+ nid = doc ['name' ][0 :- 4 ]
368+ new_id = get_previously_copied_version (nid )
369+ if not new_id :
370+ print (f"...no new name for { doc ['name' ]} (migrated already?)" )
371+ else :
372+ batch .add (
373+ request = gdrive .session ().files ().update (
374+ fileId = doc ['id' ],
375+ body = {
376+ 'name' : f"{ new_id } .{ doc ['name' ].split ('.' )[- 1 ]} "
377+ }
378+ ),
379+ request_id = doc ['id' ]
380+ )
381+ if len (batch ._requests ) > 49 :
382+ batch .execute ()
383+ batch = new_batch ()
384+ if len (batch ._requests ) > 0 :
385+ batch .execute ()
386+
347387if __name__ == "__main__" :
348388 current_user = gdrive .session ().about ().get (fields = 'user' ).execute ()['user' ]
349389 print (f"Currently logged in as \" { current_user ['displayName' ]} \" " )
0 commit comments