Este equipo redactor ha pasado mucho tiempo buscando para dar espuestas a tu pregunta, te dejamos la solución por eso esperamos serte de gran ayuda.
Solución:
Si su hipervínculo se especifica en otra celda como una fórmula, por ejemplo, supongamos que la celda A1 contiene la fórmula =HYPERLINK("https://www.wikipedia.org/","Wikipedia")
, puede extraer el texto del vínculo mediante una expresión regular. Todo lo que necesitas hacer es:
=REGEXEXTRACT(FORMULATEXT(A1),"""(.+)"",")
Esta fórmula arrojará el resultado:
https://www.wikipedia.org/
No se requieren funciones personalizadas.
Después de una actualización en 2020, todos los códigos que encontré en Internet estaban rotos, así que aquí está mi contribución:
/**
* 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
El servicio integrado de SpreadsheetApp no parece admitir la extracción de dichas URL, pero el servicio de Hojas "Avanzadas" sí lo hace.
Habilite el servicio Hojas de cálculo avanzadas de acuerdo con las instrucciones de Google y luego pruebe este código:
function onOpen()
var menu = SpreadsheetApp.getUi().createMenu("Extract URLs");
menu.addItem("Process =EXTRACT_URL(A1) formulas", "processFormulas");
menu.addToUi();
function EXTRACT_URL()
return SpreadsheetApp.getActiveRange().getFormula();
function processFormulas()
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var rows = sheet.getDataRange().getFormulas();
for (var r = 0; r < rows.length; r++)
var row = rows[r];
for (var c = 0; c < row.length; c++)
var formula = row[c];
if (formula)
var matched = formula.match(/^=EXTRACT_URL((.*))$/i);
if (matched)
var targetRange = matched[1];
if (targetRange.indexOf("!") < 0)
targetRange = sheet.getName() + "!" + targetRange;
var result = Sheets.Spreadsheets.get(spreadsheet.getId(),
ranges: targetRange,
fields: 'sheets.data.rowData.values.hyperlink'
);
try
var value = result.sheets[0].data[0].rowData[0].values[0].hyperlink;
sheet.getRange(r + 1, c + 1).setValue(value);
catch (e)
// no hyperlink; just ignore
Esto crea una función personalizada llamada EXTRACT_URL
, que debe llamar con una referencia a la celda que contiene el enlace; por ejemplo, =EXTRACT_URL(B3)
.
Desafortunadamente, no funciona de inmediato, porque las funciones personalizadas no pueden usar directamente el servicio Hojas avanzadas. Por lo tanto, este script agrega un menú llamado "Extraer URL" a la barra de menú de la hoja de cálculo, con un elemento de menú denominado "Fórmulas de proceso =EXTRACT_URL(A1)". Al hacer clic en él, reemplazará todos los usos de la EXTRACT_URL
función con la propia URL.
Sección de Reseñas y Valoraciones
Recuerda que tienes la opción de aclarar si descubriste tu atolladero a tiempo.