Cómo extraer el enlace de una celda con hipervínculo en Google Sheets

extraer hipervinculos de celda en google sheets

Hoy mientras intentaba exportar una serie de tareas desde Google Sheets a Asana (vía archivo .CSV) me di con la sorpresa de que las celdas que contienen un enlace / link embebido, al exportarse a CSV, solo incluyen el texto del link más no el vínculo asociado. Busqué, sin éxito, una fórmula que permita extraer estos enlaces y colocarlos en una nueva columna… no existe.

Extraer links de celda en google spreadsheets a una nueva columna

Luego de investigar un poco online encontré la solución: vía el editor de comandos de Google hay que generar un nuevo script con este código (dejo al inicio los comentarios que referencian al autor del mismo):

/** 
 * Returns the URL of a hyperlinked cell, if it's entered with control + k. 
 * Author: @Frederico Schardong based on https://support.google.com/docs/thread/28558721?hl=en&msgid=28927581 and https://github.com/andrebradshaw/utilities/blob/master/google_apps/convertHiddenLinks.gs 
 * Supports ranges
 */
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
}

Estos son los pasos exactos que debes seguir en las hojas de cálculo de Google:

  • En la hoja de cálculo en donde quieras hacer las modificaciones ve a Herramientas > Editor de Secuencias de Comandos
  • En la ventana resultante pega el código y lo guardas.
editor de secuencia de comandos
  • Retorna a tu archivo. Agrega una nueva columna para colocar las urls. En la columna nueva usa la fórmula que acabas de crear: =linkURL(celda_de_origen)
  • Si todo sale bien deberías obtener los enlaces resultantes en la nueva columna sin problemas.
links de celdas extraidos en nueva columna en google spreadsheets

El script quedará grabado en su cuenta para uso futuro, así que pueden hacer referencia nuevamente a la misma función en cualquier otro documento que generen.

Espero les sea de utilidad!