Как извлечь URL из ссылки в Google Таблицах, используя формулу?
Я скопировал с веб-сайта ряд гиперссылок и вставил их в лист google. Значения отображаются как связанный текст, а не гиперссылки, и все еще связаны правильно. Для каждой строки я пытаюсь извлечь URL ТОЛЬКО (не дружественный текст) и вставить его в соседний столбец. Как это можно осуществить с помощью формулы?
Например:
=SOMEFUNCTION(cellThatHoldsLink, returnedURLOnly)
Этот и подобные сценарии не применяются, поскольку вставленные данные не являются формулами.
Я приму решение script (GAS) или любое решение в этом отношении, но предпочел бы, можно ли это сделать с помощью формулы. Я нашел десятки скриптов манипуляции HYPERLINK, но ничего в этом конкретном сценарии или даже о том, как получить доступ к свойству, содержащему этот URL-адрес. Спасибо.
Ответы
Ответ 1
Вы можете использовать importxml, чтобы вытащить всю таблицу данных, и она содержит следующее:
=IMPORTXML(A1,"//tr")
рядом с ним мы потянули строки url в тегах
=IMPORTXML(A1,"//tr/td[1]/a/@href")
и, наконец, конкатенировать строки с исходным доменом для создания ваших гиперссылок
=ARRAYFORMULA("http://www.bnilouisiana.com/"&INDIRECT("A2:A"&COUNTA(A2:A)))
Ответ 2
Если вы счастливы использовать Google Apps Script, то используйте функцию ниже, чтобы получить гиперссылку из текста. Когда вы передаете ячейку, вам следует отправить двойную кавычку. Например: =GETURL("A4")
, чтобы получить гиперссылку A4.
function GETURL(input) {
var range = SpreadsheetApp.getActiveSheet().getRange(input);
var url = /"(.*?)"/.exec(range.getFormulaR1C1())[1];
return url;
}
Обратитесь здесь, например.
Изменить: игнорировать этот ответ. Это будет работать, только если url связан в ячейке.
Ответ 3
Нашел ответ, который работает в Google Groups (от Troy):
- Опубликуйте свою электронную таблицу (скопируйте URL-адрес)
- Создайте новую таблицу и используйте функцию IMPORTXML (замените URL-адрес URL-адресом, который вы получите на шаге 1)
- Вы получите данные - вы можете скопировать и вставить значения, в которых они вам нужны.
- Отменить публикацию электронной таблицы (если вы не хотите ее публиковать)
Может быть сделано Script, но у меня нет времени.:)
Ответ 4
Похоже, что встроенная служба SpreadsheetApp не поддерживает извлечение таких URL-адресов, а служба "Расширенные" Sheets.
Включите услугу Advanced Sheets в соответствии с инструкциями Google, а затем попробуйте этот код:
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
}
}
}
}
}
}
Это создает пользовательскую функцию с именем EXTRACT_URL
, которую вы должны вызывать со ссылкой на ячейку, содержащую ссылку; например, =EXTRACT_URL(B3)
.
К сожалению, это не работает сразу, потому что сервис Advanced Sheets не может напрямую использоваться пользовательскими функциями. Таким образом, этот сценарий добавляет меню "Извлечение URL" в строку меню электронной таблицы с одним элементом меню, помеченным как "Process = EXTRACT_URL (A1) формул". Когда вы щелкните по нему, он заменит все виды использования функции EXTRACT_URL
на сам URL.
Ответ 5
Я смог решить эту проблему для Jotform очень простым способом.
Я хотел включить ссылку "Изменить" в запрос, но она выдаст мне только текст "Изменить представление".
Однако я заметил, что у меня есть идентификатор формы в столбце R. Затем я смог скопировать ссылку JotForm и объединить ее со ссылкой на ячейку " https://www.jotform.com/edit/ " & R2.