]> git.cworth.org Git - turbot/blobdiff - turbot/sheets.py
Rename each sheet we copy from the template
[turbot] / turbot / sheets.py
index 047f793b0c22c805615b215a5f803d81dec56e65..ff8b1423f3385c8bdb700ccbbbb14aa3c7c5d7a5 100644 (file)
@@ -1,5 +1,6 @@
 PUZZLE_TEMPLATE_ID = "1drSoyrE4gM3JaGweDkOybwXWdKPIDTfUmB1gQCYS3Uw"
-PUZZLE_TEMPLATE_SHEETS = ["Text", "Grid"]
+PUZZLE_TEMPLATE_SHEETS = ["Text", "Square grid", "Hex Grid",
+                          "Formula reference: indexing"]
 
 def sheets_create(turb, name):
     """Create a new sheet with the given name.
@@ -61,7 +62,10 @@ def sheets_create_for_puzzle(turb, puzzle):
         insertDataOption='INSERT_ROWS',
         body={
             'range': 'A1:A2',
-            'values': [['=HYPERLINK("'+url_link+'","'+url_text+'")'], ['=HYPERLINK("'+channel_url_link+'","'+channel_url_text+'")']]
+            'values': [
+                ['=HYPERLINK("'+url_link+'","'+url_text+'")'],
+                ['=HYPERLINK("'+channel_url_link+'","'+channel_url_text+'")']
+            ]
         }).execute()
 
     # Copy some sheets from the Template spreadsheet
@@ -70,11 +74,58 @@ def sheets_create_for_puzzle(turb, puzzle):
 
     for sheet in response["sheets"]:
         if sheet["properties"]["title"] in PUZZLE_TEMPLATE_SHEETS:
-            turb.sheets.sheets().copyTo(spreadsheetId=PUZZLE_TEMPLATE_ID,
-                                        sheetId=sheet["properties"]["sheetId"],
-                                        body={
-                                            "destinationSpreadsheetId":
-                                            new_sheet['id']
-                                        }).execute()
+            res = turb.sheets.sheets().copyTo(
+                spreadsheetId=PUZZLE_TEMPLATE_ID,
+                sheetId=sheet["properties"]["sheetId"],
+                body={
+                    "destinationSpreadsheetId": new_sheet['id']
+                }).execute()
+            rename_sheet(turb, new_sheet['id'], res['sheetId'],
+                         sheet["properties"]["title"])
 
     return new_sheet
+
+def rename_sheet(turb, spreadsheet_id, sheet_id, name):
+
+    body = {
+        'requests': [{
+            'updateSheetProperties': {
+                'properties': {
+                    'sheetId': sheet_id,
+                    'title': name
+                },
+                'fields': 'title'
+            }
+        }]
+    }
+
+    turb.sheets.batchUpdate(spreadsheetId=spreadsheet_id,
+                            body=body
+                            ).execute()
+
+def rename_spreadsheet(turb, url, newName):
+    id = extractIdFromSheetUrl(url)
+    requests = []
+    requests.append({
+        'updateSpreadsheetProperties': {
+            'properties': {
+                'title': newName
+            },
+            'fields': 'title'
+        }
+    })
+
+    body = {
+        'requests': requests
+    }
+
+    turb.sheets.batchUpdate(spreadsheetId = id,
+                            body=body
+                            ).execute()
+
+def extractIdFromSheetUrl(url):
+    # Google sheet ids are between the /d/ and /edit in the url, like
+    # https://docs.google.com/spreadsheets/d/1dxHBzjen...-LaXeVPrg/edit#gid=0
+    startIndex = url.find('/d/') + 3
+    endIndex = url.find('/edit')
+    return url[startIndex : endIndex]