web-dev-qa-db-fra.com

Faire toutes les cellules d'une colonne des liens à partir des valeurs dans la cellule?

J'ai une colonne de cellules dans une feuille de calcul Google avec des valeurs telles que:

512
2123
2342
3532

Ce que je voudrais faire, c'est convertir tout cela en hyperlien et conserver la valeur comme texte du lien:

http://www.example.com/id/ {valeur}

... où {valeur} est la valeur de la cellule. Je connais le format d'un lien hypertexte dans une feuille de calcul Google, mais je ne souhaite pas le faire manuellement à chaque fois que je mets un numéro. Je veux un processus simple qui, lorsque j'ajoute une nouvelle ligne, transforme le contenu de cette colonne en lien avec la valeur que j'ai entrée.

J'ai essayé ceci:

=HYPERLINK(CONCATENATE("http://www.example.com/id/",A1);A1)

Mais je reçois:

erreur: dépendance circulaire détectée

3
Kirill Fuchs

Je n'ai pas pu reproduire vos résultats. En fait, cela a parfaitement fonctionné.

enter image description here

Ce que vous avez essayé de faire est très probablement le suivant:

Dans A1 vous avez saisi =HYPERLINK(CONCATENATE("http://www.example.com/id/",A1);A1) et cela génère une erreur grossière.

Mise à jour

Si vous voulez vraiment obtenir le résultat dans A1, alors vous devez utiliser un script.

Code

// global
var ss = SpreadsheetApp.getActiveSpreadsheet();

function onOpen() {
  var menu = [{name: "create URL", functionName: "createURL"}];
  ss.addMenu("URL", menu);
}

function onEdit(e) {
  var activeRange = e.source.getActiveRange();

  if(activeRange.getColumn() == 1) { 
    if(e.value != "") { 
      activeRange.setValue('=HYPERLINK("http://www.example.com/id/'+e.value+'","'+e.value+'")');
    }
  }
}

function createURL() {
  var aCell = ss.getActiveCell(), value = aCell.getValue();
  aCell.setValue('=HYPERLINK("http://www.example.com/id/'+value+'","'+value+'")');  
}

A expliqué:

Le e.value récupérera la valeur des cellules (applicable uniquement à une cellule). La setValue() ajoutera la chaîne concaténée dans la getActiveRange(). Tout n'est exécuté que lorsque e.value contient quelque chose et que la plage active est dans la colonne A.

J'ai également créé une option de menu supplémentaire pour pouvoir accéder au script de cette manière.

Exemple:

J'ai créé un exemple de fichier pour vous: constructeur d'URL onEdit
Ajoutez ce script via Outils> Editeur de script dans l'éditeur de script. Appuyez sur le bouton "bug" et vous pouvez utiliser le script.

4
Jacob Jan Tuinstra

J'ai modifié la réponse de Jacob pour qu'elle soit un peu plus flexible. Il suffit de copier et coller ce script. Un menu sera créé avec une macro "Convertir les cellules sélectionnées en URL". Dit tout. Sélectionnez maintenant les cellules de la même colonne que vous souhaitez convertir en URL, puis cliquez sur Macro.

Scénario

// global
var ss = SpreadsheetApp.getActiveSpreadsheet();

function onOpen() {

  var menu = [{name: "Convert Selected Cells To URLs", functionName: "createURL"}];
  ss.addMenu("My Macros", menu);

}

function createURL() {

  var range = SpreadsheetApp.getActiveSheet().getActiveRange();
  if(range.getNumColumns() == 1) { 

    var numRows = range.getNumRows();

    for (var i = 1; i <= numRows; i++) {
      var value = range.getCell(i,1).getValue();
      range.getCell(i,1).setValue('=HYPERLINK("'+value+'","'+value+'")');
    }

  }

}
1
Donny V.

J'ai trouvé un moyen de contourner le problème et aucun script n'est nécessaire. Vous avez juste besoin d'utiliser une autre feuille.

Voir la fiche mise à jour mentionnée ci-dessus pour l'exemple de travail.

=HYPERLINK(CONCATENATE("http://www.example.com/check-out.html?value1=",roundup('sheet2'!A1),"&value2=",$B30,"&value3",$C30),roundup('sheet2'!A1))

J'espère que cela t'aides.

0
Vlad