diff --git a/gs/data.gs b/gs/data.gs index e659a7ec0..6d607a3e9 100644 --- a/gs/data.gs +++ b/gs/data.gs @@ -3,95 +3,94 @@ function refreshData() { data = fill2dJsonArrayWithNulls(data); sData.clearContents(); sData.getRange(1, 1, data.length, data[0].length).setValues(data); - concatenateNamelessComboLists(); + concatNamelessComboLists(); sData.getRange(2, 1, data.length, data[0].length).sort(1); refreshParsed(); refreshPublic(); } -function concatenateNamelessComboLists() { +function concatNamelessComboLists() { var numLists = getNumLists(sData); - var listColumnIndex = getColIndexNum(sData, "list"); - var listData = sData.getRange(2, listColumnIndex, numLists, 1).getValues(); - var relatedColumnIndex = getColIndexNum(sData, "related"); - var relatedData = sData.getRange(2, relatedColumnIndex, numLists, 1).getValues(); + var colIndexNumDataList = getColIndexNum(sData, "list"); + var colRangeDataList = sData.getRange(2, colIndexNumDataList, numLists, 1).getValues(); + var colRangeDataRelated = sData.getRange(2, getColIndexNum(sData, "related"), numLists, 1).getValues(); for (var i = 0; i < numLists; i++) { - if (!listData[i][0]) { - listData[i][0] = relatedData[i][0].replace(/,/g, " + "); + if (!colRangeDataList[i][0]) { + colRangeDataList[i][0] = colRangeDataRelated[i][0].replace(/,/g, " + "); } } - sData.getRange(2, listColumnIndex, numLists, 1).setValues(listData); + sData.getRange(2, colIndexNumDataList, numLists, 1).setValues(colRangeDataList); } function refreshParsed() { var urlTypes = ["viewUrl", "addUrl", "homeUrl", "forumUrl", "issuesUrl", "email", "donateUrl"]; - for (var i = 0, urlTypesLength = urlTypes.length; i < urlTypesLength; i++) { - var columnIndex = getColIndex(sParsed, urlTypes[i]); - var columnDataRange = sParsed.getRange(columnIndex + "2:" + columnIndex); - columnDataRange.clearContent(); - var columnDataTopCell = sParsed.getRange(columnIndex + "2"); + for (var i = 0, + var urlTypesLength = urlTypes.length; i < urlTypesLength; i++) { + var colIndexParsedUrlType = getColIndex(sParsed, urlTypes[i]); + var colRangeParsedUrlType = sParsed.getRange(colIndexParsedUrlType + "2:" + colIndexParsedUrlType); + colRangeParsedUrlType.clearContent(); + var colTopParsedUrlType = sParsed.getRange(colIndexParsedUrlType + "2"); switch (urlTypes[i]) { case "viewUrl": - columnDataTopCell.setValue("=createHtmlArrayUrl(\"viewUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); + colTopParsedUrlType.setValue("=createHtmlArrayLinkButton(\"viewUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colIndexParsedUrlType + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colIndexParsedUrlType + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); break; case "addUrl": - var viewUrlColumnIndex = getColIndex(sData, "viewUrl"); - columnDataTopCell.setValue("=createHtmlArrayUrl(\"addUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(Data!" + viewUrlColumnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(Data!" + viewUrlColumnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); + var colIndexDataViewUrl = getColIndex(sData, "viewUrl"); + colTopParsedUrlType.setValue("=createHtmlArrayLinkButton(\"addUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(Data!" + colIndexDataViewUrl + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(Data!" + colIndexDataViewUrl + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); break; case "homeUrl": - columnDataTopCell.setValue("=createHtmlArrayUrl(\"homeUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); + colTopParsedUrlType.setValue("=createHtmlArrayLinkButton(\"homeUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colIndexParsedUrlType + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colIndexParsedUrlType + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); break; case "forumUrl": - columnDataTopCell.setValue("=createHtmlArrayUrl(\"forumUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); + colTopParsedUrlType.setValue("=createHtmlArrayLinkButton(\"forumUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colIndexParsedUrlType + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colIndexParsedUrlType + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); break; case "issuesUrl": - columnDataTopCell.setValue("=createHtmlArrayUrl(\"issuesUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); + colTopParsedUrlType.setValue("=createHtmlArrayLinkButton(\"issuesUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colIndexParsedUrlType + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colIndexParsedUrlType + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); break; case "email": - columnDataTopCell.setValue("=createHtmlArrayUrl(\"email\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); + colTopParsedUrlType.setValue("=createHtmlArrayLinkButton(\"email\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colIndexParsedUrlType + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colIndexParsedUrlType + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); break; case "donateUrl": - columnDataTopCell.setValue("=createHtmlArrayUrl(\"donateUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + columnIndex + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); + colTopParsedUrlType.setValue("=createHtmlArrayLinkButton(\"donateUrl\",INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colIndexParsedUrlType + "1,Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(" + colIndexParsedUrlType + "1,Data!A1:1,0),4),\"1\",\"\")),Data!A2:A)"); break; default: } - var columnData = columnDataRange.getDisplayValues(); - columnDataRange.clearContent(); - columnDataRange.setValues(columnData); + colRangeParsedUrlType.clearContent(); + colRangeParsedUrlType.setValues(colRangeParsedUrlType.getDisplayValues()); } } function refreshPublic() { var publicFields = ["list", "tags", "description", "links", "related"]; - for (var i = 0, publicFieldsLength = publicFields.length; i < publicFieldsLength; i++) { - var columnIndex = getColIndex(sPublic, publicFields[i]); - var columnDataRange = sPublic.getRange(columnIndex + "2:" + columnIndex); - columnDataRange.clearContent(); - var columnDataTopCell = sPublic.getRange(columnIndex + "2"); + for (var i = 0, + var publicFieldsLength = publicFields.length; i < publicFieldsLength; i++) { + var colIndexPublicPublicField = getColIndex(sPublic, publicFields[i]); + var colRangePublicPublicField = sPublic.getRange(colIndexPublicPublicField + "2:" + colIndexPublicPublicField); + colRangePublicPublicField.clearContent(); + var colTopPublicPublicField = sPublic.getRange(colIndexPublicPublicField + "2"); switch (publicFields[i]) { case "list": - columnDataTopCell.setValue("=createHtmlArrayList(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"list\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"list\",Data!A1:1,0),4),\"1\",\"\")))"); + colTopPublicPublicField.setValue("=createHtmlArrayListName(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"list\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"list\",Data!A1:1,0),4),\"1\",\"\")))"); break; case "tags": - columnDataTopCell.setValue("=ARRAYFORMULA(\"\"&INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"tagLang\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"tagLang\",Data!A1:1,0),4),\"1\",\"\"))&\"\")"); + colTopPublicPublicField.setValue("=ARRAYFORMULA(\"\"&INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"tagLang\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"tagLang\",Data!A1:1,0),4),\"1\",\"\"))&\"\")"); break; case "description": if (getColIndex(sData, "descrSourceUrl")) { - columnDataTopCell.setValue("=ARRAYFORMULA(IF(ISBLANK(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descrSourceUrl\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descrSourceUrl\",Data!A1:1,0),4),\"1\",\"\"))),,\"
\")&INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descr\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descr\",Data!A1:1,0),4),\"1\",\"\"))&IF(ISBLANK(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descrSourceUrl\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descrSourceUrl\",Data!A1:1,0),4),\"1\",\"\"))),,\"\"))"); + colTopPublicPublicField.setValue("=ARRAYFORMULA(IF(ISBLANK(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descrSourceUrl\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descrSourceUrl\",Data!A1:1,0),4),\"1\",\"\"))),,\"
\")&INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descr\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descr\",Data!A1:1,0),4),\"1\",\"\"))&IF(ISBLANK(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descrSourceUrl\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descrSourceUrl\",Data!A1:1,0),4),\"1\",\"\"))),,\"\"))"); } else { - columnDataTopCell.setValue("=ARRAYFORMULA(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descr\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descr\",Data!A1:1,0),4),\"1\",\"\")))"); + colTopPublicPublicField.setValue("=ARRAYFORMULA(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descr\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"descr\",Data!A1:1,0),4),\"1\",\"\")))"); } break; case "links": - columnDataTopCell.setValue("=ARRAYFORMULA(IF(Parsed!A2:A=\"\",\"\",\"
\"&Parsed!A2:A&Parsed!B2:B&Parsed!C2:C&Parsed!D2:D&Parsed!E2:E&Parsed!F2:F&Parsed!G2:G&\"
\"))"); + colTopPublicPublicField.setValue("=ARRAYFORMULA(IF(Parsed!A2:A=\"\",\"\",\"\"&Parsed!A2:A&Parsed!B2:B&Parsed!C2:C&Parsed!D2:D&Parsed!E2:E&Parsed!F2:F&Parsed!G2:G&\"
\"))"); break; case "related": - columnDataTopCell.setValue("=createHtmlArrayRelated(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"related\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"related\",Data!A1:1,0),4),\"1\",\"\")))"); + colTopPublicPublicField.setValue("=createHtmlArrayRelatedLists(INDIRECT(\"Data!\"&SUBSTITUTE(ADDRESS(1,MATCH(\"related\",Data!A1:1,0),4),\"1\",\"2\")&\":\"&SUBSTITUTE(ADDRESS(1,MATCH(\"related\",Data!A1:1,0),4),\"1\",\"\")))"); break; default: } - var columnData = columnDataRange.getDisplayValues(); - columnDataRange.clearContent(); - columnDataRange.setValues(columnData); + colRangePublicPublicField.clearContent(); + colRangePublicPublicField.setValues(colRangePublicPublicField.getDisplayValues()); } } \ No newline at end of file diff --git a/gs/filscore.gs b/gs/filscore.gs index 579a28f5c..7d754ea22 100644 --- a/gs/filscore.gs +++ b/gs/filscore.gs @@ -1,5 +1,5 @@ var filScoreWeight = [ - ["sumUniqueDailyVisitorsLast30", "1"] + ["sumUniqueDailyVisitorsLast30", "1.00"] ]; function refreshFilScores() { @@ -32,11 +32,9 @@ function getSumUniqueDailyVisitorsLast30() { function getDownloadsFromPiwikApi() { var colRangePiwikApiTemp = sPiwikApiTemp.getRange("A2:B"); colRangePiwikApiTemp.clearContent(); - var colTopPiwikApiTempSudv = sPiwikApiTemp.getRange("A2"); - colTopPiwikApiTempSudv.setValue("=ImportJson(CONCATENATE(\"" + piwikUrl + "?module=API&method=Actions.getDownloads&idSite=3&period=range&date=last30&flat=1&format=json&token_auth=" + piwikApiToken + "\"), \"/url,/sum_daily_nb_uniq_visitors\", \"noHeaders\")"); - var colDataPiwikApiTemp = colRangePiwikApiTemp.getDisplayValues(); + sPiwikApiTemp.getRange("A2").setValue("=ImportJson(CONCATENATE(\"" + piwikUrl + "?module=API&method=Actions.getDownloads&idSite=3&period=range&date=last30&flat=1&format=json&token_auth=" + piwikApiToken + "\"), \"/url,/sum_daily_nb_uniq_visitors\", \"noHeaders\")"); colRangePiwikApiTemp.clearContent(); - colRangePiwikApiTemp.setValues(colDataPiwikApiTemp); + colRangePiwikApiTemp.setValues(colRangePiwikApiTemp.getDisplayValues()); } function copyPiwikDownloadsToFilScore() { @@ -45,26 +43,24 @@ function copyPiwikDownloadsToFilScore() { var colRangeFilScoreSudv = sFilScore.getRange(colIndexFilScoreSudv + "2:" + colIndexFilScoreSudv); colRangeFilScoreSudv.clearContent(); colTopFilScoreSudv.setValue("=ARRAYFORMULA(IF(ISBLANK($B2:B),\"\",IFERROR(VLOOKUP($B2:B,PiwikApiTemp!$A$2:$B,2,FALSE),0)))"); - var colDataFilScoreSudv = colRangeFilScoreSudv.getDisplayValues(); colRangeFilScoreSudv.clearContent(); - colRangeFilScoreSudv.setValues(colDataFilScoreSudv); + colRangeFilScoreSudv.setValues(colRangeFilScoreSudv.getDisplayValues()); } function calculateSumUniqueDailyVisitorsLast30Score() { var colIndexFilScoreSudvScore = getColIndex(sFilScore, "sumUniqueDailyVisitorsLast30Score"); var colRangeFilScoreSudvScore = sFilScore.getRange(colIndexFilScoreSudvScore + "2:" + colIndexFilScoreSudvScore); colRangeFilScoreSudvScore.clearContent(); - var colTopFilScoreSudvScore = sFilScore.getRange(colIndexFilScoreSudvScore + "2"); var colIndexFilScoreSudv = getColIndex(sFilScore, "sumUniqueDailyVisitorsLast30"); - colTopFilScoreSudvScore.setValue("=ARRAYFORMULA(IF(ISBLANK($" + colIndexFilScoreSudv + "2:" + colIndexFilScoreSudv + "),\"\",PERCENTRANK($" + colIndexFilScoreSudv + "$2:$" + colIndexFilScoreSudv + ",$" + colIndexFilScoreSudv + "2:$" + colIndexFilScoreSudv + ")))"); - var colDataFilScoreSudvScore = colRangeFilScoreSudvScore.getDisplayValues(); + sFilScore.getRange(colIndexFilScoreSudvScore + "2").setValue("=ARRAYFORMULA(IF(ISBLANK($" + colIndexFilScoreSudv + "2:" + colIndexFilScoreSudv + "),\"\",PERCENTRANK($" + colIndexFilScoreSudv + "$2:$" + colIndexFilScoreSudv + ",$" + colIndexFilScoreSudv + "2:$" + colIndexFilScoreSudv + ")))"); colRangeFilScoreSudvScore.clearContent(); - colRangeFilScoreSudvScore.setValues(colDataFilScoreSudvScore); + colRangeFilScoreSudvScore.setValues(colRangeFilScoreSudvScore.getDisplayValues()); } function calculateFilScore() { var filScoreArrayFormula = "=ARRAYFORMULA("; - for (var i = 0, filScoreWeightLength = filScoreWeight.length; i < filScoreWeightLength; i++) { + for (var i = 0, + var filScoreWeightLength = filScoreWeight.length; i < filScoreWeightLength; i++) { var colIndex = getColIndex(sFilScore, filScoreWeight[i][0] + "Score"); if (i > 0) { filScoreArrayFormula += "*"; @@ -79,11 +75,9 @@ function updateFilScoreArrayFormula(filScoreArrayFormula) { var colIndexFilScoreFilScore = getColIndex(sFilScore, "filScore"); var colRangeFilScoreFilScore = sFilScore.getRange(colIndexFilScoreFilScore + "2:" + colIndexFilScoreFilScore); colRangeFilScoreFilScore.clearContent(); - var colTopFilScoreFilScore = sFilScore.getRange(colIndexFilScoreFilScore + "2"); - colTopFilScoreFilScore.setValue(filScoreArrayFormula); - var colDataFilScoreFilScore = colRangeFilScoreFilScore.getDisplayValues(); + sFilScore.getRange(colIndexFilScoreFilScore + "2").setValue(filScoreArrayFormula); colRangeFilScoreFilScore.clearContent(); - colRangeFilScoreFilScore.setValues(colDataFilScoreFilScore); + colRangeFilScoreFilScore.setValues(colRangeFilScoreFilScore.getDisplayValues()); } function copyFilScoreToPublic() { diff --git a/gs/html-factory.gs b/gs/html-factory.gs index 01b2ce07e..3b70fb331 100644 --- a/gs/html-factory.gs +++ b/gs/html-factory.gs @@ -1,7 +1,7 @@ -function createHtmlArrayUrl(htmlType, url, listName) { +function createHtmlArrayLinkButton(htmlType, url, listName) { if (url instanceof Array) { for (var i in url) { - url[i] = createHtmlArrayUrl(htmlType, url[i], listName[i]); + url[i] = createHtmlArrayLinkButton(htmlType, url[i], listName[i]); } return url; } else { @@ -37,10 +37,10 @@ function createHtmlArrayUrl(htmlType, url, listName) { } } -function createHtmlArrayList(list) { +function createHtmlArrayListName(list) { if (list instanceof Array) { for (var i in list) { - list[i] = createHtmlArrayList(list[i]); + list[i] = createHtmlArrayListName(list[i]); } return list; } else { @@ -52,10 +52,10 @@ function createHtmlArrayList(list) { } } -function createHtmlArrayRelated(related) { +function createHtmlArrayRelatedLists(related) { if (related instanceof Array) { for (var i in related) { - related[i] = createHtmlArrayRelated(related[i]); + related[i] = createHtmlArrayRelatedLists(related[i]); } return related; } else { @@ -64,7 +64,8 @@ function createHtmlArrayRelated(related) { } else { var relatedArray = related.split(','); var relatedHtml = "