From 9d6ea64461b901e225234a62f5c71b7f8487de96 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Tue, 10 Jan 2017 15:07:24 -0600 Subject: [PATCH] run custom functions on-demand rather than auto incremental, still in progress... --- gs/type/RefreshData.gs | 194 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 179 insertions(+), 15 deletions(-) diff --git a/gs/type/RefreshData.gs b/gs/type/RefreshData.gs index c05402e55..815d3b5b7 100644 --- a/gs/type/RefreshData.gs +++ b/gs/type/RefreshData.gs @@ -1,9 +1,9 @@ -var typeSheet = { - "FilterLists Global": "GlobalData", - "FilterLists Regional": "RegionalData", - "FilterLists Forked": "ForkedData", - "FilterLists Combo": "ComboData", - "FilterLists Stale": "StaleData" +var typeSheetPrefix = { + "FilterLists Global": "Global", + "FilterLists Regional": "Regional", + "FilterLists Forked": "Forked", + "FilterLists Combo": "Combo", + "FilterLists Stale": "Stale" }; var typeGitHubUrl = { @@ -14,19 +14,19 @@ var typeGitHubUrl = { "FilterLists Stale": "https://raw.githubusercontent.com/collinbarrett/FilterLists/master/json-data/stale.json" }; +var ss = SpreadsheetApp.getActiveSpreadsheet(), + options = [{ + name: "Refresh Data", + functionName: "refreshJson" + }]; + function onOpen() { - var ss = SpreadsheetApp.getActiveSpreadsheet(), - options = [{ - name: "Refresh Data", - functionName: "refreshJson" - }, ]; ss.addMenu("Refresh Data", options); } function refreshJson() { - var ss = SpreadsheetApp.getActiveSpreadsheet(); - var sheet = ss.getSheetByName(typeSheet[ss.getName()]); - var data = ImportJSON(typeGitHubUrl[ss.getName()], "", "noTruncate,rawHeaders,noInherit"); + var sheet = ss.getSheetByName(typeSheetPrefix[ss.getName()] + "Data"); + var data = ImportJson(typeGitHubUrl[ss.getName()], "", "noTruncate,rawHeaders,noInherit"); for (i = 0; i < data.length; i++) { for (j = 0; j < data[0].length; j++) { if (data[i][j] == null) { @@ -36,5 +36,169 @@ function refreshJson() { } sheet.clearContents(); var range = sheet.getRange(1, 1, data.length, data[0].length); - range.setValues(data) + range.setValues(data); + refreshParsed(); + refreshPublic(); +} + +function refreshParsed() { + var sheetName = typeSheetPrefix[ss.getName()] + "Parsed"; + var sheet = ss.getSheetByName(sheetName); + var viewColHeader = refreshViewUrl(sheet); + refreshAddUrl(sheet, viewColHeader); + refreshHomeUrl(sheet, viewColHeader); + refreshGuideUrl(sheet, viewColHeader); + refreshForumUrl(sheet, viewColHeader); + refreshIssuesUrl(sheet, viewColHeader); + refreshEmailUrl(sheet, viewColHeader); + refreshChangelogUrl(sheet, viewColHeader); + refreshDonateUrl(sheet, viewColHeader); + refreshForksCombos(sheet, viewColHeader); +} + +function refreshViewUrl(sheet) { + var colHeader = findColumnHeader(sheet, "viewUrl"); + if (colHeader) { + var rangeFull = sheet.getRange(colHeader + "2:" + colHeader); + rangeFull.clearContent(); + var rangeTop = sheet.getRange(colHeader + "2"); + rangeTop.setValue("=GenerateHtmlViewLink(INDIRECT(\"" + typeSheetPrefix[ss.getName()] + "Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"\"))," + typeSheetPrefix[ss.getName()] + "Data!" + colHeader + "2:" + colHeader + ")"); + var data = rangeFull.getDisplayValues(); + rangeFull.clearContent(); + rangeFull.setValues(data); + } + return colHeader; +} + +function refreshAddUrl(sheet, viewColHeader) { + var colHeader = findColumnHeader(sheet, "addUrl"); + if (colHeader) { + var rangeFull = sheet.getRange(colHeader + "2:" + colHeader); + rangeFull.clearContent(); + var rangeTop = sheet.getRange(colHeader + "2"); + rangeTop.setValue("=GenerateHtmlAddLink(INDIRECT(\"" + typeSheetPrefix[ss.getName()] + "Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + viewColHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + viewColHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"\"))," + typeSheetPrefix[ss.getName()] + "Data!" + viewColHeader + "2:" + viewColHeader + ")"); + var data = rangeFull.getDisplayValues(); + rangeFull.clearContent(); + rangeFull.setValues(data); + } +} + +function refreshHomeUrl(sheet, viewColHeader) { + var colHeader = findColumnHeader(sheet, "homeUrl"); + if (colHeader) { + var rangeFull = sheet.getRange(colHeader + "2:" + colHeader); + rangeFull.clearContent(); + var rangeTop = sheet.getRange(colHeader + "2"); + rangeTop.setValue("=GenerateHtmlViewLink(INDIRECT(\"" + typeSheetPrefix[ss.getName()] + "Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"\"))," + typeSheetPrefix[ss.getName()] + "Data!" + viewColHeader + "2:" + viewColHeader + ")"); + var data = rangeFull.getDisplayValues(); + rangeFull.clearContent(); + rangeFull.setValues(data); + } +} + +function refreshGuideUrl(sheet, viewColHeader) { + var colHeader = findColumnHeader(sheet, "guideUrl"); + if (colHeader) { + var rangeFull = sheet.getRange(colHeader + "2:" + colHeader); + rangeFull.clearContent(); + var rangeTop = sheet.getRange(colHeader + "2"); + rangeTop.setValue("=GenerateHtmlGuideLink(INDIRECT(\"" + typeSheetPrefix[ss.getName()] + "Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"\"))," + typeSheetPrefix[ss.getName()] + "Data!" + viewColHeader + "2:" + viewColHeader + ")"); + var data = rangeFull.getDisplayValues(); + rangeFull.clearContent(); + rangeFull.setValues(data); + } +} + +function refreshForumUrl(sheet, viewColHeader) { + var colHeader = findColumnHeader(sheet, "forumUrl"); + if (colHeader) { + var rangeFull = sheet.getRange(colHeader + "2:" + colHeader); + rangeFull.clearContent(); + var rangeTop = sheet.getRange(colHeader + "2"); + rangeTop.setValue("=GenerateHtmlForumLink(INDIRECT(\"" + typeSheetPrefix[ss.getName()] + "Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"\"))," + typeSheetPrefix[ss.getName()] + "Data!" + viewColHeader + "2:" + viewColHeader + ")"); + var data = rangeFull.getDisplayValues(); + rangeFull.clearContent(); + rangeFull.setValues(data); + } +} + +function refreshIssuesUrl(sheet, viewColHeader) { + var colHeader = findColumnHeader(sheet, "issuesUrl"); + if (colHeader) { + var rangeFull = sheet.getRange(colHeader + "2:" + colHeader); + rangeFull.clearContent(); + var rangeTop = sheet.getRange(colHeader + "2"); + rangeTop.setValue("=GenerateHtmlIssuesLink(INDIRECT(\"" + typeSheetPrefix[ss.getName()] + "Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"\"))," + typeSheetPrefix[ss.getName()] + "Data!" + viewColHeader + "2:" + viewColHeader + ")"); + var data = rangeFull.getDisplayValues(); + rangeFull.clearContent(); + rangeFull.setValues(data); + } +} + +function refreshEmailUrl(sheet, viewColHeader) { + var colHeader = findColumnHeader(sheet, "email"); + if (colHeader) { + var rangeFull = sheet.getRange(colHeader + "2:" + colHeader); + rangeFull.clearContent(); + var rangeTop = sheet.getRange(colHeader + "2"); + rangeTop.setValue("=GenerateHtmlEmailLink(INDIRECT(\"" + typeSheetPrefix[ss.getName()] + "Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"\"))," + typeSheetPrefix[ss.getName()] + "Data!" + viewColHeader + "2:" + viewColHeader + ")"); + var data = rangeFull.getDisplayValues(); + rangeFull.clearContent(); + rangeFull.setValues(data); + } +} + +function refreshChangelogUrl(sheet, viewColHeader) { + var colHeader = findColumnHeader(sheet, "changelogUrl"); + if (colHeader) { + var rangeFull = sheet.getRange(colHeader + "2:" + colHeader); + rangeFull.clearContent(); + var rangeTop = sheet.getRange(colHeader + "2"); + rangeTop.setValue("=GenerateHtmlChangelogLink(INDIRECT(\"" + typeSheetPrefix[ss.getName()] + "Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"\"))," + typeSheetPrefix[ss.getName()] + "Data!" + viewColHeader + "2:" + viewColHeader + ")"); + var data = rangeFull.getDisplayValues(); + rangeFull.clearContent(); + rangeFull.setValues(data); + } +} + +function refreshDonateUrl(sheet, viewColHeader) { + var colHeader = findColumnHeader(sheet, "donateUrl"); + if (colHeader) { + var rangeFull = sheet.getRange(colHeader + "2:" + colHeader); + rangeFull.clearContent(); + var rangeTop = sheet.getRange(colHeader + "2"); + rangeTop.setValue("=GenerateHtmlDonateLink(INDIRECT(\"" + typeSheetPrefix[ss.getName()] + "Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colHeader + "1," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"\"))," + typeSheetPrefix[ss.getName()] + "Data!" + viewColHeader + "2:" + viewColHeader + ")"); + var data = rangeFull.getDisplayValues(); + rangeFull.clearContent(); + rangeFull.setValues(data); + } +} + +function refreshForksCombos(sheet) { + var colHeader = findColumnHeader(sheet, "forksCombos"); + if (colHeader) { + var rangeFull = sheet.getRange(colHeader + "2:" + colHeader); + rangeFull.clearContent(); + var rangeTop = sheet.getRange(colHeader + "2"); + rangeTop.setValue("=ARRAYFORMULA(SUBSTITUTE(INDIRECT(\"" + typeSheetPrefix[ss.getName()] + "Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"forksCombos\"," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"forksCombos\"," + typeSheetPrefix[ss.getName()] + "Data!A1:1,0),4),\"1\",\"\")),\",\",\"
\"))"); + var data = rangeFull.getDisplayValues(); + rangeFull.clearContent(); + rangeFull.setValues(data); + } +} + +function findColumnHeader(sheet, header) { + var headerRange = sheet.getRange("A1:1"); + var headerData = headerRange.getValues(); + for (i = 0; i < headerData[0].length; i++) { + if (headerData[0][i] == header) { + return String.fromCharCode(65 + i); + } + } + return null; +} + +function refreshPublic() { + var sheetName = typeSheetPrefix[ss.getName()] + "Public"; + var sheet = ss.getSheetByName(sheetName); } \ No newline at end of file