Guest User

Portal Submission Tracker

a guest
Jul 11th, 2014
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2. Ingress Portal Submission Tracker fog Google Sheets - ver 1.2 (unknown author)
  3.  
  4. Installation:
  5. - start new google docs spreadsheet
  6. - Tools -> Script editor
  7. - paste the whole code, save and close the editor and spreadsheet
  8. - open spreadsheet again
  9. - next to Help menu you will see "Ingress Portals" menu
  10. - Ingress Portals -> Update shreadsheet
  11.  
  12. Embrace the Enlightenment!
  13. **/
  14.  
  15. function ingressSubmissionsTracker() {
  16.  var threads = GmailApp.search("ingress portal (Submitted|Live|Rejected|Duplicate): "+"[email protected]");
  17.  var sheet   = SpreadsheetApp.getActiveSheet();
  18.  var rowBackgrounds = {
  19.    'Live':'lightgreen',
  20.    'Rejected':'orange',
  21.    'Submitted':'white',
  22.    'Duplicate':'magenta',
  23.  }
  24.  var rownum  = 1;
  25.  sheet.clear();
  26.  sheet.appendRow(["Portal Name","Date Submitted","Date Resolved","Monkey Speed","Age","Link","Status"]);
  27.  sheet.setColumnWidth(1, 250);
  28.  sheet.setColumnWidth(2, 120);
  29.  sheet.setColumnWidth(3, 120);
  30.  sheet.setFrozenRows(1);
  31.  var portalStatus = {};
  32.  var resolveDate = {};
  33.  for (var i = 0; i < threads.length; i++) {
  34.    var header = threads[i].getFirstMessageSubject();
  35.    var date = threads[i].getLastMessageDate();
  36.    var link = threads[i].getPermalink();
  37.    var portalState = header.split(":")[0].split(" ")[2];
  38.    var portalName = header.split(": ")[1];
  39.    var portalKey = portalName.toUpperCase();
  40.    var sheetLink = '=HYPERLINK("' + link + '" ; "Link")';
  41.    if (!(portalKey in portalStatus)){
  42.      portalStatus[portalKey] = portalState;
  43.    }
  44.    if (!(portalKey in resolveDate)){
  45.      resolveDate[portalKey] = "";
  46.    }
  47.    if (portalState != "Submitted"){
  48.      portalStatus[portalKey] = portalState;
  49.      resolveDate[portalKey] = date;
  50.    }
  51.    // populate spreadsheet only when we hit Submitted message
  52.    if (portalState == 'Submitted') {
  53.      rownum++;
  54.      sheet.appendRow([portalName, date, resolveDate[portalKey],
  55.                      "=IF(NOT(ISBLANK(C"+rownum+"));INT(C"+rownum+"-B"+rownum+");)",
  56.                      "=INT(NOW()-B"+rownum+")",
  57.                      sheetLink, portalStatus[portalKey]]);
  58.      var lastRow = sheet.getRange("A"+rownum+":G"+rownum);
  59.      lastRow.setBackground(rowBackgrounds[portalStatus[portalKey]]);
  60.    }
  61.  }
  62. }
  63.  
  64. /**
  65.  * Adds a custom menu to the active spreadsheet, containing a single menu item
  66.  * for invoking the ingressSubmissionsTracker() function specified above.
  67.  * The onOpen() function, when defined, is automatically invoked whenever the
  68.  * spreadsheet is opened.
  69.  * For more information on using the Spreadsheet API, see
  70.  * https://developers.google.com/apps-script/service_spreadsheet
  71.  */
  72. function onOpen() {
  73.   var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  74.   var entries = [{
  75.     name : "Update spreadsheet",
  76.     functionName : "ingressSubmissionsTracker"
  77.   }];
  78.   spreadsheet.addMenu("Ingress Portals", entries);
  79. };
Advertisement
Add Comment
Please, Sign In to add comment