{"id":27949084,"url":"https://github.com/liatemplates/spreadsheet","last_synced_at":"2025-10-08T13:04:13.872Z","repository":{"id":291636013,"uuid":"978220157","full_name":"LiaTemplates/SpreadSheet","owner":"LiaTemplates","description":"JSspreadsheet integration for LiaScript","archived":false,"fork":false,"pushed_at":"2025-05-05T18:28:23.000Z","size":41,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-07T15:19:46.162Z","etag":null,"topics":["excel","liascript","liascript-template","markdown","oer","spreadsheet"],"latest_commit_sha":null,"homepage":"https://liascript.github.io/course/?https://raw.githubusercontent.com/LiaTemplates/SpreadSheet/refs/heads/main/README.md","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LiaTemplates.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-05T16:47:35.000Z","updated_at":"2025-05-05T18:28:22.000Z","dependencies_parsed_at":"2025-05-05T19:38:43.324Z","dependency_job_id":"c4db39c2-b6f5-42af-8f13-7a1cb88ecc1c","html_url":"https://github.com/LiaTemplates/SpreadSheet","commit_stats":null,"previous_names":["liatemplates/spreadsheet"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaTemplates%2FSpreadSheet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaTemplates%2FSpreadSheet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaTemplates%2FSpreadSheet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiaTemplates%2FSpreadSheet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LiaTemplates","download_url":"https://codeload.github.com/LiaTemplates/SpreadSheet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252902622,"owners_count":21822263,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["excel","liascript","liascript-template","markdown","oer","spreadsheet"],"created_at":"2025-05-07T15:19:50.099Z","updated_at":"2025-10-08T13:04:08.826Z","avatar_url":"https://github.com/LiaTemplates.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nauthor:  André Dietrich\n\nversion: 0.0.1\n\nlogo:    img/logo.png\n\ncomment: This is a LiaScript template for **JSSpreadsheet**, a lightweight,\n          Excel‑like spreadsheet component for the web.  \n          It shows how to embed editable spreadsheets into any LiaScript course.\n\nscript:  https://bossanova.uk/jspreadsheet/v5/jspreadsheet.js\n         https://jsuites.net/v5/jsuites.js\n        \nlink:    https://bossanova.uk/jspreadsheet/v5/jspreadsheet.css\n         https://jsuites.net/v5/jsuites.css\n\n@spreadsheet: @spreadsheet_(@uid,```@0```)\n\n@spreadsheet_\n\u003cdiv id=\"spreadsheet_@0\"\u003e\u003c/div\u003e\n\u003cscript\u003e\nconst spreadsheet = document.getElementById('spreadsheet_@0')\n\nif (spreadsheet.innerHTML.length == 0) {\n    // jspreadsheet.destroy(spreadsheet)\n    jspreadsheet(spreadsheet, @1);\n    spreadsheet.addEventListener('keydown', function(e) {\n       if ([37, 38, 39, 40].indexOf(e.keyCode) \u003e -1) {\n           // Arrow key codes\n           e.stopPropagation();\n       }\n    });\n}\n\n\n\"LIA: stop\"\n\u003c/script\u003e\n@end\n--\u003e\n\n# JSSpreadsheet – LiaScript Template\n\n                 --{{0}}--\nThis template lets you drop a fully‑featured spreadsheet into any LiaScript document with a single macro.\nPowered by **[JSSpreadsheet](https://bossanova.uk/jspreadsheet)**, learners can sort, filter, validate and style data right inside the slide.\n\n**Try it now** → \\\nhttps://liascript.github.io/course/?https://raw.githubusercontent.com/LiaTemplates/SpreadSheet/refs/heads/main/README.md\n\nGitHub repo → \\\nhttps://github.com/LiaTemplates/SpreadSheet\n\nOfficial docs → \\\nhttps://bossanova.uk/jspreadsheet/v5\n\n\n                 --{{1}}--\nLike every LiaTemplate, you have three ways to integrate it, the quickest being\ncopy‑and‑paste of the definition from *Sec. Implementation*.\n\n                   {{1}}\n1. **Import the latest** (may change without notice) \\\n   `import: https://raw.githubusercontent.com/LiaTemplates/SpreadSheet/refs/heads/main/README.md`\n\n   or lock to **version 0.0.1** \\\n   `import: https://raw.githubusercontent.com/LiaTemplates/SpreadSheet/refs/tags/0.0.1/README.md`\n\n2. **Copy the definitions** into your own project.\n\n3. **Fork / clone** this repository on GitHub.\n\n## `@spreadsheet`\n\n                 --{{0}}--\n`@spreadsheet` embeds one or more worksheets.\nThe fenced code block after the macro must contain the JSON configuration that [JSSpreadsheet](https://bossanova.uk/jspreadsheet) expects.\n\n````markdown\n```json @spreadsheet\n{\n  \"worksheets\": [{\n    \"data\": [\n      [\"Task\", \"Owner\", \"Done?\"],\n      [\"Template\", \"You\", true]\n    ],\n    \"columns\": [\n      { \"type\": \"text\",      \"title\": \"Task\",  \"width\": 200 },\n      { \"type\": \"dropdown\",  \"title\": \"Owner\", \"source\": [\"You\",\"Me\"]},\n      { \"type\": \"checkbox\",  \"title\": \"Done?\" }\n    ]\n  } ]\n}\n```\n````\n\nResult:\n\n```json @spreadsheet\n{\n  \"worksheets\": [{\n    data: [\n      [\"Task\", \"Owner\", \"Done?\"],\n      [\"Template\", \"You\", true]\n    ],\n    columns: [\n      { \"type\": \"text\",      \"title\": \"Task\",  \"width\": 200 },\n      { \"type\": \"dropdown\",  \"title\": \"Owner\", \"source\": [\"You\",\"Me\"]},\n      { \"type\": \"checkbox\",  \"title\": \"Done?\" }\n    ]\n  } ]\n}\n```\n\n### Multiple worksheets\n\n           --{{0}}--\nSimply provide an array of worksheet objects:\n\n````markdown\n```json @spreadsheet\n{\n  \"worksheets\": [\n    { \"minDimensions\": [8, 12], \"worksheetName\": \"Expenses\" },\n    { \"minDimensions\": [5,  8], \"worksheetName\": \"Income\"   }\n  ]\n}\n```\n````\n\n```json @spreadsheet\n{\n  \"worksheets\": [\n    { \"minDimensions\": [8, 12], \"worksheetName\": \"Expenses\" },\n    { \"minDimensions\": [5,  8], \"worksheetName\": \"Income\"   }\n  ]\n}\n```\n\n### Calculations\n\n```json @spreadsheet\n{\n  \"worksheets\": [\n    {\n      \"data\": [\n        [\"Region\", \"Q1\", \"Q2\", \"Q3\", \"Q4\", \"Total\"],\n        [\"North\", 245000, 267000, 301000, 352000, \"=SUM(B2:E2)\"],\n        [\"South\", 312000, 298000, 286000, 329000, \"=SUM(B3:E3)\"],\n        [\"East\", 198000, 237000, 246000, 268000, \"=SUM(B4:E4)\"],\n        [\"West\", 342000, 356000, 401000, 443000, \"=SUM(B5:E5)\"],\n        [\"Total\", \"=SUM(B2:B5)\", \"=SUM(C2:C5)\", \"=SUM(D2:D5)\", \"=SUM(E2:E5)\", \"=SUM(F2:F5)\"]\n      ],\n      \"columns\": [\n        { \"type\": \"text\", \"title\": \"Region\", \"width\": 100 },\n        { \"type\": \"numeric\", \"title\": \"Q1\", \"width\": 100, \"mask\": \"$ #,##0\", \"decimal\": \".\" },\n        { \"type\": \"numeric\", \"title\": \"Q2\", \"width\": 100, \"mask\": \"$ #,##0\", \"decimal\": \".\" },\n        { \"type\": \"numeric\", \"title\": \"Q3\", \"width\": 100, \"mask\": \"$ #,##0\", \"decimal\": \".\" },\n        { \"type\": \"numeric\", \"title\": \"Q4\", \"width\": 100, \"mask\": \"$ #,##0\", \"decimal\": \".\" },\n        { \"type\": \"numeric\", \"title\": \"Total\", \"width\": 120, \"mask\": \"$ #,##0\", \"decimal\": \".\" }\n      ],\n      \"worksheetName\": \"Sales Overview\",\n      \"style\": {\n        \"A1:F1\": \"background-color: #2c3e50; color: white; font-weight: bold\",\n        \"A6:F6\": \"background-color: #f1c40f; font-weight: bold\",\n        \"F2:F5\": \"background-color: #ecf0f1; font-weight: bold\"\n      }\n    },\n    {\n      \"data\": [\n        [\"Date\", \"Product\", \"Region\", \"Sales Rep\", \"Units\", \"Price\", \"Revenue\"],\n        [\"2025-04-01\", \"Product A\", \"North\", \"John Smith\", 12, 99.99, \"=E2*F2\"],\n        [\"2025-04-03\", \"Product B\", \"South\", \"Maria Garcia\", 8, 149.99, \"=E3*F3\"],\n        [\"2025-04-05\", \"Product C\", \"East\", \"Robert Chen\", 15, 59.99, \"=E4*F4\"],\n        [\"2025-04-08\", \"Product A\", \"West\", \"Lisa Wong\", 10, 99.99, \"=E5*F5\"],\n        [\"2025-04-10\", \"Product D\", \"North\", \"James Brown\", 5, 199.99, \"=E6*F6\"],\n        [\"2025-04-12\", \"Product B\", \"South\", \"Sarah Johnson\", 7, 149.99, \"=E7*F7\"],\n        [\"2025-04-15\", \"Product E\", \"West\", \"Michael Lee\", 20, 24.99, \"=E8*F8\"]\n      ],\n      \"columns\": [\n        { \"type\": \"calendar\", \"title\": \"Date\", \"width\": 100, \"format\": \"YYYY-MM-DD\" },\n        { \"type\": \"dropdown\", \"title\": \"Product\", \"width\": 100, \"source\": [\"Product A\", \"Product B\", \"Product C\", \"Product D\", \"Product E\"] },\n        { \"type\": \"dropdown\", \"title\": \"Region\", \"width\": 100, \"source\": [\"North\", \"South\", \"East\", \"West\"] },\n        { \"type\": \"text\", \"title\": \"Sales Rep\", \"width\": 120 },\n        { \"type\": \"numeric\", \"title\": \"Units\", \"width\": 80 },\n        { \"type\": \"numeric\", \"title\": \"Price\", \"width\": 100, \"mask\": \"$ #,##0.00\", \"decimal\": \".\" },\n        { \"type\": \"numeric\", \"title\": \"Revenue\", \"width\": 120, \"mask\": \"$ #,##0.00\", \"decimal\": \".\" }\n      ],\n      \"worksheetName\": \"Sales Transactions\",\n      \"options\": {\n        \"search\": true,\n        \"columnSorting\": true\n      }\n    },\n    {\n      \"data\": [\n        [\"Product\", \"Q1 Units\", \"Q2 Units\", \"Q3 Units\", \"Q4 Units\", \"Total Units\", \"Avg Price\", \"Total Revenue\"],\n        [\"Product A\", 145, 156, 187, 203, \"=SUM(B2:E2)\", 99.99, \"=F2*G2\"],\n        [\"Product B\", 98, 112, 124, 131, \"=SUM(B3:E3)\", 149.99, \"=F3*G3\"],\n        [\"Product C\", 205, 187, 201, 234, \"=SUM(B4:E4)\", 59.99, \"=F4*G4\"],\n        [\"Product D\", 56, 68, 77, 85, \"=SUM(B5:E5)\", 199.99, \"=F5*G5\"],\n        [\"Product E\", 312, 345, 367, 401, \"=SUM(B6:E6)\", 24.99, \"=F6*G6\"]\n      ],\n      \"columns\": [\n        { \"type\": \"text\", \"title\": \"Product\", \"width\": 100 },\n        { \"type\": \"numeric\", \"title\": \"Q1 Units\", \"width\": 80 },\n        { \"type\": \"numeric\", \"title\": \"Q2 Units\", \"width\": 80 },\n        { \"type\": \"numeric\", \"title\": \"Q3 Units\", \"width\": 80 },\n        { \"type\": \"numeric\", \"title\": \"Q4 Units\", \"width\": 80 },\n        { \"type\": \"numeric\", \"title\": \"Total Units\", \"width\": 100 },\n        { \"type\": \"numeric\", \"title\": \"Avg Price\", \"width\": 100, \"mask\": \"$ #,##0.00\", \"decimal\": \".\" },\n        { \"type\": \"numeric\", \"title\": \"Total Revenue\", \"width\": 120, \"mask\": \"$ #,##0.00\", \"decimal\": \".\" }\n      ],\n      \"worksheetName\": \"Product Analysis\"\n    }\n  ]\n}\n```\n\n---\n\n```` markdown\n```json @spreadsheet\n{\n  \"worksheets\": [\n    {\n      \"data\": [\n        [\"Region\", \"Q1\", \"Q2\", \"Q3\", \"Q4\", \"Total\"],\n        [\"North\", 245000, 267000, 301000, 352000, \"=SUM(B2:E2)\"],\n        [\"South\", 312000, 298000, 286000, 329000, \"=SUM(B3:E3)\"],\n        [\"East\", 198000, 237000, 246000, 268000, \"=SUM(B4:E4)\"],\n        [\"West\", 342000, 356000, 401000, 443000, \"=SUM(B5:E5)\"],\n        [\"Total\", \"=SUM(B2:B5)\", \"=SUM(C2:C5)\", \"=SUM(D2:D5)\", \"=SUM(E2:E5)\", \"=SUM(F2:F5)\"]\n      ],\n      \"columns\": [\n        { \"type\": \"text\", \"title\": \"Region\", \"width\": 100 },\n        { \"type\": \"numeric\", \"title\": \"Q1\", \"width\": 100, \"mask\": \"$ #,##0\", \"decimal\": \".\" },\n        { \"type\": \"numeric\", \"title\": \"Q2\", \"width\": 100, \"mask\": \"$ #,##0\", \"decimal\": \".\" },\n        { \"type\": \"numeric\", \"title\": \"Q3\", \"width\": 100, \"mask\": \"$ #,##0\", \"decimal\": \".\" },\n        { \"type\": \"numeric\", \"title\": \"Q4\", \"width\": 100, \"mask\": \"$ #,##0\", \"decimal\": \".\" },\n        { \"type\": \"numeric\", \"title\": \"Total\", \"width\": 120, \"mask\": \"$ #,##0\", \"decimal\": \".\" }\n      ],\n      \"worksheetName\": \"Sales Overview\",\n      \"style\": {\n        \"A1:F1\": \"background-color: #2c3e50; color: white; font-weight: bold\",\n        \"A6:F6\": \"background-color: #f1c40f; font-weight: bold\",\n        \"F2:F5\": \"background-color: #ecf0f1; font-weight: bold\"\n      }\n    },\n    {\n      \"data\": [\n        [\"Date\", \"Product\", \"Region\", \"Sales Rep\", \"Units\", \"Price\", \"Revenue\"],\n        [\"2025-04-01\", \"Product A\", \"North\", \"John Smith\", 12, 99.99, \"=E2*F2\"],\n        [\"2025-04-03\", \"Product B\", \"South\", \"Maria Garcia\", 8, 149.99, \"=E3*F3\"],\n        [\"2025-04-05\", \"Product C\", \"East\", \"Robert Chen\", 15, 59.99, \"=E4*F4\"],\n        [\"2025-04-08\", \"Product A\", \"West\", \"Lisa Wong\", 10, 99.99, \"=E5*F5\"],\n        [\"2025-04-10\", \"Product D\", \"North\", \"James Brown\", 5, 199.99, \"=E6*F6\"],\n        [\"2025-04-12\", \"Product B\", \"South\", \"Sarah Johnson\", 7, 149.99, \"=E7*F7\"],\n        [\"2025-04-15\", \"Product E\", \"West\", \"Michael Lee\", 20, 24.99, \"=E8*F8\"]\n      ],\n      \"columns\": [\n        { \"type\": \"calendar\", \"title\": \"Date\", \"width\": 100, \"format\": \"YYYY-MM-DD\" },\n        { \"type\": \"dropdown\", \"title\": \"Product\", \"width\": 100, \"source\": [\"Product A\", \"Product B\", \"Product C\", \"Product D\", \"Product E\"] },\n        { \"type\": \"dropdown\", \"title\": \"Region\", \"width\": 100, \"source\": [\"North\", \"South\", \"East\", \"West\"] },\n        { \"type\": \"text\", \"title\": \"Sales Rep\", \"width\": 120 },\n        { \"type\": \"numeric\", \"title\": \"Units\", \"width\": 80 },\n        { \"type\": \"numeric\", \"title\": \"Price\", \"width\": 100, \"mask\": \"$ #,##0.00\", \"decimal\": \".\" },\n        { \"type\": \"numeric\", \"title\": \"Revenue\", \"width\": 120, \"mask\": \"$ #,##0.00\", \"decimal\": \".\" }\n      ],\n      \"worksheetName\": \"Sales Transactions\",\n      \"options\": {\n        \"search\": true,\n        \"columnSorting\": true\n      }\n    },\n    {\n      \"data\": [\n        [\"Product\", \"Q1 Units\", \"Q2 Units\", \"Q3 Units\", \"Q4 Units\", \"Total Units\", \"Avg Price\", \"Total Revenue\"],\n        [\"Product A\", 145, 156, 187, 203, \"=SUM(B2:E2)\", 99.99, \"=F2*G2\"],\n        [\"Product B\", 98, 112, 124, 131, \"=SUM(B3:E3)\", 149.99, \"=F3*G3\"],\n        [\"Product C\", 205, 187, 201, 234, \"=SUM(B4:E4)\", 59.99, \"=F4*G4\"],\n        [\"Product D\", 56, 68, 77, 85, \"=SUM(B5:E5)\", 199.99, \"=F5*G5\"],\n        [\"Product E\", 312, 345, 367, 401, \"=SUM(B6:E6)\", 24.99, \"=F6*G6\"]\n      ],\n      \"columns\": [\n        { \"type\": \"text\", \"title\": \"Product\", \"width\": 100 },\n        { \"type\": \"numeric\", \"title\": \"Q1 Units\", \"width\": 80 },\n        { \"type\": \"numeric\", \"title\": \"Q2 Units\", \"width\": 80 },\n        { \"type\": \"numeric\", \"title\": \"Q3 Units\", \"width\": 80 },\n        { \"type\": \"numeric\", \"title\": \"Q4 Units\", \"width\": 80 },\n        { \"type\": \"numeric\", \"title\": \"Total Units\", \"width\": 100 },\n        { \"type\": \"numeric\", \"title\": \"Avg Price\", \"width\": 100, \"mask\": \"$ #,##0.00\", \"decimal\": \".\" },\n        { \"type\": \"numeric\", \"title\": \"Total Revenue\", \"width\": 120, \"mask\": \"$ #,##0.00\", \"decimal\": \".\" }\n      ],\n      \"worksheetName\": \"Product Analysis\"\n    }\n  ]\n}\n```\n````\n\n### Persistence\n\n              --{{0}}--\nIf you want to make the data persistent during the course, add the `persistent` property to the slide.\nThis way the table will be generated only once and not destroyed when the slide is left.\n\n```` markdown\n# slide\n\u003c!--\npersistent: true\n--\u003e\n\n```json @spreadsheet\n{\n  \"worksheets\": [\n    { \"minDimensions\": [8, 12], \"worksheetName\": \"Expenses\" },\n    { \"minDimensions\": [5,  8], \"worksheetName\": \"Income\"   }\n  ]\n}\n```\n````\n\n### Columns\n\n           --{{0}}--\nThe `columns` property is an array of objects, where each object defines a column in the spreadsheet.\nEach object can have the following properties:\n\n- `type`: The type of the column (e.g., `text`, `numeric`, `dropdown`, etc.).\n- `title`: The title of the column.\n- `width`: The width of the column (in pixels).\n- `source`: The source for dropdown columns (an array of values).\n- `mask`: A mask for formatting the input (e.g., `€ #.##0,00`).\n- `decimal`: The decimal separator (e.g., `','`).\n- `multiple`: Whether the dropdown allows multiple selections (for `dropdown` type).\n- `readonly`: Whether the column is read-only (for `text` type).\n- `render`: The rendering method for the column (e.g., `square` for color picker).\n\n```json\n{\n  \"columns\": [\n    { \"type\": \"text\",      \"title\": \"Task\",  \"width\": 200 },\n    { \"type\": \"dropdown\",  \"title\": \"Owner\", \"source\": [\"You\",\"Me\"]},\n    { \"type\": \"checkbox\",  \"title\": \"Done?\" }\n  ]\n}\n```\n\n---\n\n__Column types at a glance__\n\n| Type       | Description                  | Extras (examples)                       |\n| ---------- | ---------------------------- | --------------------------------------- |\n| `text`     | Free text                    | `readonly:true`, `mask:'AA‑999'`        |\n| `numeric`  | Numbers with mask / decimals | `mask:'€ #.##0,00'`, `decimal:','`      |\n| `dropdown` | Select from list             | `source:[\"A\",\"B\",\"C\"]`, `multiple:true` |\n| `checkbox` | Boolean                      | –                                       |\n| `calendar` | Date picker                  | `format:'DD/MM/YYYY'`                   |\n| `image`    | Image URL                    | –                                       |\n| `color`    | Color picker                 | `render:'square'`                       |\n\nFor the full API see the [JSSpreadsheet documentation](https://bossanova.uk/jspreadsheet/v5/pro).\n\n## Implementation\n\n                 --{{0}}--\nEverything above runs on this tiny macro.\nCopy it once and you can spawn spreadsheets anywhere in your course.\n\n````html\nscript:  https://bossanova.uk/jspreadsheet/v5/jspreadsheet.js\n         https://jsuites.net/v5/jsuites.js\n        \nlink:    https://bossanova.uk/jspreadsheet/v5/jspreadsheet.css\n         https://jsuites.net/v5/jsuites.css\n\n@spreadsheet: @spreadsheet_(@uid,```@0```)\n\n@spreadsheet_\n\u003cdiv id=\"spreadsheet_@0\"\u003e\u003c/div\u003e\n\u003cscript\u003e\nconst spreadsheet = document.getElementById('spreadsheet_@0')\n\nif (spreadsheet.innerHTML.length \u003e 0) {\n    jspreadsheet.destroy(spreadsheet)\n}\n\njspreadsheet(spreadsheet, @1);\n\n\"LIA: stop\"\n\u003c/script\u003e\n@end\n````\n\n          --{{1}}--\nWith that in place, your learners get an interactive, resizable Excel‑like experience—no plugins, no server, just pure client‑side JavaScript.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliatemplates%2Fspreadsheet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliatemplates%2Fspreadsheet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliatemplates%2Fspreadsheet/lists"}