]> git.cworth.org Git - turbot/blobdiff - turbot/sheets.py
Use the Google drive API to create a hunt's sheet within a folder
[turbot] / turbot / sheets.py
index df2e4e9b10828068048f752b1b57bf3ed9912c63..831998d6f52c581c71b21d3b3daf67c475003d78 100644 (file)
@@ -2,17 +2,50 @@ PUZZLE_TEMPLATE_ID = "1drSoyrE4gM3JaGweDkOybwXWdKPIDTfUmB1gQCYS3Uw"
 PUZZLE_TEMPLATE_SHEETS = ["Text", "Square grid", "Hex Grid",
                           "Formula reference: indexing"]
 
-def sheets_create(turb, name):
+def sheets_create_folder(turb, folder_name):
+    """Create a new folder within Google Drive
+
+    Returns the id of the created folder."""
+
+    body = {
+        "name": folder_name,
+        "mimeType": "application/vnd.google-apps.folder"
+    }
+
+    folder = turb.files.create(body=body, fields='id').execute()
+
+    return folder.get('id')
+
+def sheets_create(turb, name, folder_id):
     """Create a new spreadsheet with the given name.
 
     Returns a dict with 'id' and 'url' of the spreadsheet
     """
 
-    spreadsheet = create_spreadsheet(turb, name)
+    body = {
+        "name": name,
+        "parents": [folder_id],
+        "mimeType": "application/vnd.google-apps.spreadsheet"
+    }
+
+    spreadsheet = turb.files.create(body=body, fields='id').execute()
+    id = spreadsheet['id']
+
+    # The files.create call gives us the ID for our new sheet, but we
+    # need the URL for it as well. So we get that with the sheets API.
+    spreadsheet = turb.sheets.get(spreadsheetId=id,
+                                  fields='spreadsheetUrl').execute()
+    url = spreadsheet['spreadsheetUrl']
+
+    # Finally, we want to also allow anyone with the link to the sheet
+    # to be able to edit it.
+    turb.permissions.create(fileId=id,
+                            body={'type': 'anyone', 'role': 'writer'},
+                            fields='').execute()
 
     return {
-        'id': spreadsheet['spreadsheetId'],
-        'url': spreadsheet['spreadsheetUrl']
+        'id': id,
+        'url': url
     }
 
 def create_spreadsheet(turb, name):