๐ Arcane Scribe
v2.4
โ๏ธ Sync
โ๏ธ Setup / Share
๐ Components:
0
gp
Update Stock
๐ Grimoires
Add
๐งช 5e Config
Hours/Level
Gold/Level
+
๐ Connectivity & Share
Apps Script URL
Connect & Pull
Copy Share Link
Google Apps Script Code:
const HEADERS = ["name", "level", "hours", "m", "special", "completed", "notes"]; const CONFIG_SHEET = "Config"; function doGet(e) { const ss = SpreadsheetApp.getActiveSpreadsheet(); let bookData = {}; let config = {}; ss.getSheets().forEach(s => { let name = s.getName(); if(name === CONFIG_SHEET) { let data = s.getDataRange().getValues(); data.forEach(row => config[row[0]] = row[1]); return; } let data = s.getDataRange().getValues(); let spells = []; if(data.length > 1) { let headers = data[0]; for(let i=1; i
obj[h] = data[i][idx]); spells.push(obj); } } bookData[name] = spells; }); return ContentService.createTextOutput(JSON.stringify({books: bookData, config: config})).setMimeType(ContentService.MimeType.JSON); } function doPost(e) { try { const p = JSON.parse(e.postData.contents); if(p.action === 'saveData') { const ss = SpreadsheetApp.getActiveSpreadsheet(); let cSheet = ss.getSheetByName(CONFIG_SHEET) || ss.insertSheet(CONFIG_SHEET); cSheet.clear(); let configRows = Object.entries(p.config); if(configRows.length > 0) cSheet.getRange(1, 1, configRows.length, 2).setValues(configRows); Object.keys(p.books).forEach(name => { let s = ss.getSheetByName(name) || ss.insertSheet(name); s.clear(); let spells = p.books[name]; let rows = [HEADERS]; if(spells && spells.length > 0) spells.forEach(sp => rows.push(HEADERS.map(h => sp[h] || ""))); s.getRange(1, 1, rows.length, HEADERS.length).setValues(rows); }); return ContentService.createTextOutput(JSON.stringify({status: "success"})).setMimeType(ContentService.MimeType.JSON); } } catch(err) { return ContentService.createTextOutput(JSON.stringify({error: err.toString()})).setMimeType(ContentService.MimeType.JSON); } }
Close
Scribe Spell
1st Level
2nd Level
3rd Level
4th Level
5th Level
6th Level
7th Level
8th Level
9th Level
Cantrip
H
:
M
+15
School Specialty
โ ๏ธ INSUFFICIENT PAGES
Completed
Save
Cancel