0
votes

Utilisation d'expressions régulières pour éliminer les chaînes de requête dans les fiches Google

J'essaie de créer quelque chose qui recherchera la colonne A1 pour les chaînes de requête des URL (exemple:? Autre_), puis supprimez-les en utilisant des expressions régulières. J'ai compris quel type d'expression régulière à utiliser dans la section "Rechercher et remplacer" sur Google Feuilles, mais je ne sais pas comment l'écrire.

Expression régulière: \? (. *)

S'il vous plaît laissez-moi savoir où je devrais commencer avec cela.


2 commentaires

Veuillez fournir un coup d'écran ou partager votre feuille. Fournir le résultat de la chaîne et du désir


@Rocky dans la colonne A1 de ma feuille, nous avons plusieurs résultats qui incluons des chaînes de requête, telles que celles suivantes: /? Login = 1 /? Login = `Nous souhaitons configurer un script dans Google App script pour exécuter et supprimer ces chaînes de requête. .


3 Réponses :


1
votes

Je ne sais pas comment implémenter dans une feuille de Google. Mais vous pouvez utiliser la regex suivante pour obtenir la chaîne de requête entière:

regex: /\?.*$/ code> p>

Exemple dans JS: P>

p>

const regex= /\?.*$/

console.log("example.com/home?utf_medium=browser".replace(regex, "")) // Result: example.com/home

console.log("example.com/post?utf_medium=browser&key=value".replace(regex, "")) // Result: example.com/post


0 commentaires

1
votes

Vous n'avez pas besoin d'expressions régulières pour éliminer les chaînes de requête.

function removeQueryStrings() {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getActiveSheet();
  const rg=sh.getRange(1,1,sh.getLastRow(),1);
  var vs=rg.getValues();
  vs.forEach(function(r,i){
    let idx=r[0].indexOf('?');
    if(idx!=-1) {
      sh.getRange(i+1,1).setValue(r[0].slice(0,idx));
    }
  });
}


0 commentaires

0
votes

Vous allez ici:

p>

function myFunction() {
  //Use Spreadsheet app to select this current spreadsheet, then this current sheet
  let sheetToScan = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; 
  //Edit this to be the range you want
  const rangeToScan = 'A1:A5' 
  //load the range
  let range = sheetToScan.getRange(rangeToScan)
  //This expression copys the range's values to a 2D array.
  let cellValuesArray = range.getValues(); 
  //Edit this to be the regex you want
  const myRegex  = /\?.*$/; 
  console.log(cellValuesArray); 
  // 2 layer for loop for 2 dimensional range selection
  for (const row in cellValuesArray) { 
    for (const cell in cellValuesArray[row]) {
      // Convert cell value from an Object to a String
      let stringToSearch = String(cellValuesArray[row][cell]) 
      //IF matches regex
      if (myRegex.test(stringToSearch)) { 
        console.log(cellValuesArray[row][cell]); 
        //replace regex with nothing (delete matched text)
        let replacedWithString = stringToSearch.replace(myRegex, ''); 
        // Set cell value in array to updated string
        cellValuesArray[row][cell] = replacedWithString 
        console.log('Found a Match!!: "', stringToSearch, '" replaced with: "', replacedWithString, '"'); 
      }
    }  
  }
  console.log(cellValuesArray);
  //Set new values with replacements in Spreadsheet
  range.setValues(cellValuesArray); 
}


0 commentaires