Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Script by DimensionSlip
- * <s>Original OC do not steal</s>
- *
- * Last Updated: 2017/11/24
- */
- var NAME_INDEX = 0;
- var SORT_INDEX = 6;
- var TH_DATE_INDEX = 0;
- var TH_NAME_INDEX = 1;
- var TH_JOURNAL_INDEX = 2;
- var TH_URL_INDEX = 3;
- var TH_STATUS_INDEX = 4;
- var TH_TITLE_INDEX = 5;
- var TH_DESC_INDEX = 6;
- var TH_CHARA_COUNT_INDEX = 7;
- function onOpen() {
- var ui = SpreadsheetApp.getUi();
- ui.createMenu('Automations')
- .addItem('Generate CR Chart', 'generateCRChart')
- .addItem('Generate Thread Tracker', 'generateThreadTracker')
- .addToUi();
- }
- function generateCRChart() {
- var output = HtmlService
- .createTemplateFromFile("cr")
- .evaluate();
- var codeOutput = output.getContent();
- var ui = SpreadsheetApp.getUi();
- var app = UiApp.createApplication().setWidth(400).setHeight(400);
- var html = app.createHTML();
- html.setText(codeOutput);
- app.add(html);
- ui.showModelessDialog(app,'C/P this thing (click on the text, then Ctrl + A, Ctrl + C)');
- }
- function generateThreadTracker() {
- var output = HtmlService
- .createTemplateFromFile("tracker")
- .evaluate();
- var codeOutput = output.getContent();
- var ui = SpreadsheetApp.getUi();
- var app = UiApp.createApplication().setWidth(400).setHeight(400);
- var html = app.createHTML();
- html.setText(codeOutput);
- app.add(html);
- ui.showModelessDialog(app,'C/P this thing (click on the text, then Ctrl + A, Ctrl + C)');
- }
- function loadConfig() {
- var test = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Config").getRange("B1:B").getValues()
- return test;
- }
- /* CR chart logic start */
- function getData() {
- var ss = SpreadsheetApp.getActiveSpreadsheet();
- var ssData = ss.getDataRange().getValues();
- var sortCriteria = ss.getSheetByName("Key").getRange("A2:A").getValues();
- var rawData = [];
- for (var i = 0; i < sortCriteria.length; i++) {
- var obj = {};
- obj.sortCriteria = sortCriteria[i][0];
- obj.data = [];
- rawData.push(obj);
- }
- var threadData = ss.getSheetByName("Threads").getDataRange().getValues();
- for (var i = 0; i < ssData.length; i++) {
- for (var j = 0; j < rawData.length; j++) {
- if (rawData[j].sortCriteria === ssData[i][SORT_INDEX]) {
- ssData[i].threads = [];
- // sort threads
- for (var t = 0; t < threadData.length; t++) {
- if (threadData[t][1] === ssData[i][NAME_INDEX]) {
- ssData[i].threads.push(threadData[t]);
- }
- }
- rawData[j].data.push(ssData[i]);
- break;
- }
- }
- }
- return rawData;
- }
- /* Thread Tracker logic start */
- var monthNames = ["January", "February", "March", "April", "May", "June",
- "July", "August", "September", "October", "November", "December"
- ];
- function getMonthYearFromDate(dateVal) {
- return monthNames[dateVal.getMonth()] + " " + dateVal.getYear();
- }
- function getThreadURLChara(arr) {
- return "<a href='" + arr[TH_URL_INDEX] + "'>" + arr[TH_NAME_INDEX] + "</a>";
- }
- function getValidDateObj(date) {
- if (date instanceof Date) {
- return date;
- }
- return new Date(date);
- }
- function getThreadData() {
- var threadData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Threads").getDataRange().getValues();
- var rawData = [];
- var isInData = false;
- var tempMonthYear;
- var currentMonthIndex = -1;
- for (var i = 1; i < threadData.length; i++) {
- var thDate = new Date(threadData[i][TH_DATE_INDEX]);
- tempMonthYear = getMonthYearFromDate(thDate);
- // check if already in rawData
- currentMonthIndex = -1;
- for (var j = 0; j < rawData.length; j++) {
- if (rawData[j].month === tempMonthYear) {
- currentMonthIndex = j;
- break;
- }
- }
- // create if not existing
- if (currentMonthIndex == -1) {
- currentMonthIndex = rawData.length;
- var tempMonthYearData = {};
- tempMonthYearData.month = tempMonthYear;
- tempMonthYearData.threads = [];
- threadData[i][TH_DATE_INDEX] = Utilities.formatDate(getValidDateObj(threadData[i][TH_DATE_INDEX]), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "d");
- threadData[i][TH_DESC_INDEX] = "<div>" + threadData[i][TH_DESC_INDEX] + "</div>";
- threadData[i].push(1);
- tempMonthYearData.threads.push(threadData[i]);
- rawData.push(tempMonthYearData);
- } else {
- isInData = false;
- var currLength = rawData[currentMonthIndex].threads.length;
- for (var j = 0; j < currLength; j++) {
- // already in the tracker, just add characters and append descriptions instead
- if (rawData[currentMonthIndex].threads[j][TH_TITLE_INDEX] === threadData[i][TH_TITLE_INDEX]) {
- if (threadData[i][TH_DESC_INDEX] != "") {
- if (rawData[currentMonthIndex].threads[j][TH_CHARA_COUNT_INDEX] == 1 && rawData[currentMonthIndex].threads[j][TH_DESC_INDEX] != "") {
- rawData[currentMonthIndex].threads[j][TH_DESC_INDEX] = "<div><b>" + getThreadURLChara(rawData[currentMonthIndex].threads[j]) + "</b>: " + rawData[currentMonthIndex].threads[j][TH_DESC_INDEX].substr(5);
- Logger.log(rawData[currentMonthIndex].threads[j][TH_DESC_INDEX]);
- }
- rawData[currentMonthIndex].threads[j][TH_DESC_INDEX] = rawData[currentMonthIndex].threads[j][TH_DESC_INDEX] + "<div>" + "<b>" + getThreadURLChara(threadData[i]) + "</b>: " + threadData[i][TH_DESC_INDEX] + "</div>";
- Logger.log(rawData[currentMonthIndex].threads[j][TH_DESC_INDEX]);
- }
- if (rawData[currentMonthIndex].threads[j][TH_NAME_INDEX].indexOf(threadData[i][TH_NAME_INDEX]) == -1) {
- rawData[currentMonthIndex].threads[j][TH_NAME_INDEX] = rawData[currentMonthIndex].threads[j][TH_NAME_INDEX] + ", " + threadData[i][TH_NAME_INDEX];
- }
- rawData[currentMonthIndex].threads[j][TH_CHARA_COUNT_INDEX]++;
- isInData = true;
- break;
- }
- }
- if (!isInData) {
- // add new entry
- threadData[i][TH_DATE_INDEX] = Utilities.formatDate(getValidDateObj(threadData[i][TH_DATE_INDEX]), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "d");
- threadData[i][TH_DESC_INDEX] = "<div>" + threadData[i][TH_DESC_INDEX] + "</div>";
- threadData[i].push(1);
- rawData[currentMonthIndex].threads.push(threadData[i]);
- }
- }
- }
- return rawData;
- }
Add Comment
Please, Sign In to add comment