+ # Rename each copied sheet to match the name from the template
+ sheet_name = sheet["properties"]["title"]
+ # Except for "Text" which we rename to the puzzle name
+ if sheet_name == "Text":
+ sheet_name = puzzle['name']
+ rename_sheet(turb, spreadsheet_id, res['sheetId'], sheet_name)
+
+ # Next, delete the blank sheet made at spreadsheet creation time
+ delete_sheet(turb, spreadsheet_id, first_sheet_id)
+
+ # Insert some useful links into the sheet where expected
+ if 'url' in puzzle:
+ url_link = puzzle['url']
+ url_text = "Original puzzle link"
+ spreadsheet_update_data(
+ turb, spreadsheet_id, "B1:B1",
+ '=HYPERLINK("{}","{}")'.format(url_link, url_text))
+
+ if 'channel_url' in puzzle:
+ url_link = puzzle['channel_url']
+ url_text = "Slack channel link"
+ spreadsheet_update_data(
+ turb, spreadsheet_id, "B2:B2",
+ '=HYPERLINK("{}","{}")'.format(url_link, url_text))
+
+ return {
+ 'id': spreadsheet_id,
+ 'url': spreadsheet_url
+ }
+
+def spreadsheet_update_data(turb, spreadsheet_id, range, text):
+
+ turb.sheets.values().update(
+ spreadsheetId=spreadsheet_id,
+ range=range,
+ valueInputOption='USER_ENTERED',
+ body={
+ 'range': range,
+ 'values': [
+ [text]
+ ]
+ }
+ ).execute()
+
+def delete_sheet(turb, spreadsheet_id, sheet_id):
+
+ body = {
+ 'requests': [{
+ 'deleteSheet': {
+ 'sheetId': sheet_id,
+ },
+ }]
+ }