Advertisement
anonydee

Untitled

Apr 21st, 2023
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 3.74 KB | Source Code | 0 0
  1. function onOpen() {
  2.     SpreadsheetApp.getUi()
  3.         .createMenu("Re-directs")
  4.         .addItem('Final re-directs', 'run')
  5.         .addItem('Final cleanup', 'finalCleanup')
  6.         .addToUi();
  7. }
  8.  
  9. function run() {
  10.     var ss = SpreadsheetApp.getActiveSpreadsheet();
  11.     ss.toast("Starting execution ...")
  12.     var sheet1 = ss.getSheetByName("1 Analytics");
  13.     var sheet2 = ss.getSheetByName("2 Screaming Frog");
  14.     var sheet3 = ss.getSheetByName("3 Ahrefs backlinks");
  15.     var sheet = ss.getSheetByName("prefinal");
  16.     if(!sheet) sheet = ss.insertSheet("prefinal");
  17.     sheet.getDataRange()
  18.         .clear();
  19.     var v1 = sheet1.getDataRange()
  20.         .getValues();
  21.     sheet.getRange(1, 1, v1.length, v1[0].length)
  22.         .setValues(v1)
  23.     var v2 = sheet2.getRange("A2:A" + sheet2.getLastRow())
  24.         .getValues();
  25.     sheet.getRange(sheet.getLastRow() + 1, 1, v2.length, v2[0].length)
  26.         .setValues(v2)
  27.     var v3 = sheet3.getRange("N2:N" + sheet3.getLastRow())
  28.         .getValues();
  29.     sheet.getRange(sheet.getLastRow() + 1, 1, v3.length, v3[0].length)
  30.         .setValues(v3)
  31.  
  32.     SpreadsheetApp.flush()
  33.  
  34.     var v = sheet.getRange("A2:A" + sheet.getLastRow())
  35.         .getValues();
  36.     for(var i = 0; i < v.length; i++) {
  37.         //if(v[i][0].indexOf("http") != 0) {
  38.         v[i][0] = v[i][0]?.replace(/.*\/\/[^\/]*/, '');
  39.         v[i][0] = v[i][0]?.split("?")[0];
  40.         //}
  41.     }
  42.  
  43.     ss.toast("Please wait ...")
  44.     sheet.getRange("A2:A" + sheet.getLastRow())
  45.         .setValues(v);
  46.  
  47.     SpreadsheetApp.flush()
  48.  
  49.     sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns())
  50.         .offset(1, 0, sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns())
  51.             .getNumRows() - 1)
  52.         .sort([{
  53.             column: 2,
  54.             ascending: false
  55.         }, {
  56.             column: 1,
  57.             ascending: true
  58.         }]);
  59.     var values = sheet.getDataRange()
  60.         .getValues();
  61.     var db = {};
  62.     v = []
  63.     for(var i = 0; i < values.length; i++) {
  64.         string = values[i][0]?.split("?")[0];
  65.         values[i][0] = string;
  66.         if(db.hasOwnProperty(string)) {
  67.             ;
  68.         } else {
  69.             v.push(values[i])
  70.         }
  71.         db[string] = "";
  72.     }
  73.  
  74.     //remove the jpg pdf etc
  75.  
  76.     v = v.map(row => {
  77.             let fileName = row[0];
  78.             let fileExtension = fileName.split('.')
  79.                 .pop();
  80.             if(fileExtension === 'jpg' || fileExtension === 'png' || fileExtension === 'svg' || fileExtension === 'jpeg' || fileExtension === 'pdf') {
  81.                 return undefined
  82.             } else {
  83.                 return row;
  84.             }
  85.         })
  86.         .filter(Boolean)
  87.  
  88.     resultSheet = ss.getSheetByName("Final re-directs")
  89.     if(!resultSheet) resultSheet = ss.insertSheet("Final re-directs");
  90.     resultSheet.getDataRange()
  91.         .clearContent()
  92.     resultSheet.getRange(1, 1, v.length, v[0].length)
  93.         .setValues(v);
  94.     ss.deleteSheet(sheet);
  95.     resultSheet.activate();
  96. }
  97.  
  98. function finalCleanup() {
  99.     var ss = SpreadsheetApp.getActiveSpreadsheet();
  100.     ss.toast("Starting execution ...")
  101.     var sheet1 = ss.getSheetByName("1 Analytics");
  102.     var sheet2 = ss.getSheetByName("2 Screaming Frog");
  103.     var sheet3 = ss.getSheetByName("3 Ahrefs backlinks");
  104.     var sheet = ss.getSheetByName("Ready for customer");
  105.     if(!sheet) sheet = ss.insertSheet("Ready for customer");
  106.     sheet.clear()
  107.     sheet.getRange("A1")
  108.         .setValue(`=arrayformula(iferror(SPLIT('4 Getredirects'!A1:A,",",true)))`);
  109.     SpreadsheetApp.flush()
  110.     values = sheet.getDataRange()
  111.         .getValues()
  112.     sheet.getRange(1, 1, values.length, values[0].length)
  113.         .setValues(values)
  114.     sheet.getDataRange()
  115.         .removeDuplicates([1, 2]);
  116.     sheet.getRange("D1")
  117.         .setValue(`={"Side";arrayformula(if(A2:A<>"","/"&RIGHT(A2:A, LEN(A2:A)-(FIND("/",A2:A,FIND("/",A2:A,FIND("/",A2:A)+1)+1))),""))}`)
  118.     sheet.getRange("E1")
  119.         .setValue(`={"Sidevisninger";arrayformula(if(A2:A<>"",iferror(VLOOKUP(D2:D,'Final re-directs'!$A:$B,2,false)),""))}
  120. `)
  121.     SpreadsheetApp.flush();
  122.     values = sheet.getDataRange()
  123.         .getValues()
  124.     sheet.getRange(1, 1, values.length, values[0].length)
  125.         .setValues(values)
  126.     sheet.deleteColumns(4, 1);
  127.  
  128. }
  129.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement