Formule pour extraire l'URL d'un lien hypertexte

Bonjour, je suis novice sur Google Sheets.

J’ai une question simple: j’aimerais extraire l’URL des liens hypertexte de la colonne A dans la colonne B (comme indiqué sur le schéma).

Connaissez-vous une formule simple qui pourrait me le permettre?

Je vous remercie.

img 20220203 0004

Bonjour,

avec cette fonction personnalisée à copier dans l'éditeur de script

puis si en A1 il y a le lien hyper mettre en B1 = linkURL(A1) ou =linkURL(A1:A10) pour la plage A1:A10 se trouvant les liens hyper

/**
 * Renvoie l'URL d'une cellule hyperliée, si elle est entrée avec la commande hyperlien.
 * Prend en charge les plages
 * @param {A1} référence Référence de cellule
 * @customfunction
 */
function linkURL(reference) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var formula = SpreadsheetApp.getActiveRange().getFormula();
  var args = formula.match(/=\w+\((.*)\)/i);
  try {
    var range = sheet.getRange(args[1]);
  }
  catch(e) {
    throw new Error(args[1] + ' n´est pas une plage valide');
  }
  var formulas = range.getFormulas();
  var output = [];
  for (var i = 0; i < formulas.length; i++) {
    var row = [];
    for (var j = 0; j < formulas[0].length; j++) {
      var url = formulas[i][j].match(/=hyperlink\("([^"]+)"/i);
      row.push(url ? url[1] : '');
    }
    output.push(row);
  }
  return output
}

Bonjour,

une version formule mais qui ne convient pas avec tous les cas

=REGEXEXTRACT(FORMULATEXT(A1);"""http.*?""")

et une autre ;-)

=REGEXEXTRACT(FORMULATEXT(A1);"""(.+?)""")

Merci pour votre réactivité...

Malheureusement ça ne marche pas chez moi...

Il est vrai que je découvre en même temps l'éditeur de script... et je ne suis pas sûr d'enregistrer correctement. Sans doute faudrait t-il que je potasse un peu en amont avant de venir demander ce genre de choses sur le forum...

Mais si je comprends bien, il n'existe pas de fonction native au sein de google sheets pour ce genre de chose.

Tout dépend de comment il est fait ...

si c'est

=HYPERLINK("https://www.site.org/";"wiki")

les formules données ci-dessus fonctionnent, notamment celle de Gilbert

=REGEXEXTRACT(FORMULATEXT(A1);"""(.+?)""")

pour aller plus loin, mets un lien vers un fichier simplifié https://www.sheets-pratique.com/fr/cours/partage

IL est vrai que je me rends compte que mon premier message n'était peut-être pas assez explicite...

Quand je parle de lien hypertexte, il s'agit de texte sur lequel est appliqué un lien hypertexte. Je souhaite afficher l'URL en clair dans une case à côté en somme.

Quoiqu'il en soit voici le lien vers un document simplifié

https://docs.google.com/spreadsheets/d/1ZmfzMt0TVViu58TKkvqUgzjbzNf-faGYEMxr6KxLDuM/edit?usp=sharing

'il n'y ait pas de fonction intégrée pour extraire les URL des hyperliens

peut-être que Mike nous sortira ça de son chapeau ;-))

Pour l'instant je n'ai pas trouvé

Avec des liens provenant d'un copier/coller, cette fonction fonctionne (voir contribution de Gilbert)

function linkURL(reference) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var formula = SpreadsheetApp.getActiveRange().getFormula();
  var args = formula.match(/=\w+\((.*)\)/i);
  try {
    var range = sheet.getRange(args[1]);
  }
  catch(e) {
    throw new Error(args[1] + ' is not a valid range');
  }

  var formulas = range.getRichTextValues();
  var output = [];
  for (var i = 0; i < formulas.length; i++) {
    var row = [];
    for (var j = 0; j < formulas[0].length; j++) {
      row.push(formulas[i][j].getLinkUrl());
    }
    output.push(row);
  }
  return output
}

pour des liens mis comme ceci

=HYPERLINK("https://www.site.org/";"wiki")

alors >> https://forum.excel-pratique.com/sheets/formule-pour-extraire-l-url-d-un-lien-hypertexte-167550#p103...

oui ça fonctionne avec la fonction HYPERLIEN mais ce n’est pas ce que demande gael228

J’ai fait des recherches mais je n’ai rien trouvé pourtant ça existe chez Microsoft avec GETURL

C'est super ça fonctionne! merci beaucoup!

Mon problème c'est que je ne sais pas comment vous avez fait... (cf le processus pour programmer le sript) je vais y travailler de mon côté si nécessaire.

Pour l'heure je peux me contenter de copier dans ce document les données dont je veux extraire les URL.

Voilà un script pour faire la première demande de gael228 CàD sans =HYPERLIEN

sur une idée de Ben Collins

image
//pour lancer mettre dans la cellule de recherche  =GetURL(A1) attention sensible à la casse
function GetURL(input) {

  var myFormula = SpreadsheetApp.getActiveRange().getFormula();
  var myAddress = myFormula.replace('=GetURL(',"").replace(')',"");
  var myRange = SpreadsheetApp.getActiveSheet().getRange(myAddress);
  return myRange.getRichTextValue().getLinkUrl()
 }
Rechercher des sujets similaires à "formule extraire url lien hypertexte"