Jak wyodrębnić adres URL z łącza w Arkuszach Google za pomocą formuły?
Skopiowałem ze strony internetowej serię hiperłączy i wkleiłem je do arkusza google. Wartości są wyświetlane jako tekst połączony, a nie formuły hiperłącza i nadal są poprawnie połączone. Dla każdego wiersza próbuję wyodrębnić tylko adres URL (nie Przyjazny tekst) i wstawić go do sąsiedniej kolumny. Jak można to osiągnąć za pomocą formuły?
Na przykład:
=SOMEFUNCTION(cellThatHoldsLink, returnedURLOnly)
Ten i podobne scenariusze nie mają zastosowania, ponieważ wklejone dane nie są formułami. Przyjmę rozwiązanie Skryptowe (gazowe), lub dowolne rozwiązanie w tym zakresie, ale wolałoby, aby można było to zrobić za pomocą wzoru. Znalazłem dziesiątki skryptów manipulacji hiperłączami, ale nic na ten konkretny scenariusz, a nawet jak uzyskać dostęp do właściwości, która przechowuje ten adres url. Dzięki.
4 answers
Możesz użyć importxml, aby pobrać całą tabelę danych i jej zawartość w następujący sposób:
=IMPORTXML(A1,"//tr")
Obok wyciągnęliśmy ciągi url w znacznikach
=IMPORTXML(A1,"//tr/td[1]/a/@href")
I na koniec połączył łańcuchy z oryginalną domeną, aby utworzyć hiperłącza
=ARRAYFORMULA("http://www.bnilouisiana.com/"&INDIRECT("A2:A"&COUNTA(A2:A)))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-06 20:53:45
Jeśli chcesz korzystać ze skryptu Google Apps, użyj poniższej funkcji, aby uzyskać hiperłącze z tekstu. Po przejściu komórki należy wysłać z podwójną wyceną. Np: =GETURL("A4")
Aby uzyskać hiperłącze A4.
function GETURL(input) {
var range = SpreadsheetApp.getActiveSheet().getRange(input);
var url = /"(.*?)"/.exec(range.getFormulaR1C1())[1];
return url;
}
Zobacz tutaj na przykład.
Edit: Ignoruj tę odpowiedź. Będzie to działać tylko wtedy, gdy adres url jest połączony w komórce.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-06 14:03:05
Znaleziono odpowiedź, która działa w Google Groups (by Troy):
- Opublikuj swój arkusz kalkulacyjny (skopiuj adres url)
- Utwórz nowy arkusz kalkulacyjny i użyj funkcji IMPORTXML (zastąp adres url adresem URL uzyskanym w kroku 1)
- otrzymasz dane - możesz następnie skopiować i wkleić wartości tam, gdzie ich potrzebujesz
- Wycofaj publikację arkusza kalkulacyjnego (jeśli nie chcesz, aby był publiczny)
Można zrobić skryptem, ale nie mam teraz czasu. :)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-13 15:54:03
Wbudowana usługa SpreadsheetApp wydaje się nie obsługiwać wyciągania takich adresów URL, ale usługa "zaawansowane" Arkusze tak.
Włącz usługę Advanced Sheets zgodnie z instrukcjami Google , a następnie wypróbuj ten kod:
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
}
}
}
}
}
}
Tworzy to funkcję niestandardową o nazwie EXTRACT_URL
, którą należy wywołać z odniesieniem do komórki, która zawiera odnośnik; na przykład =EXTRACT_URL(B3)
.
Niestety nie działa od razu, ponieważ usługa Advanced Sheets nie może być używana bezpośrednio przez funkcje niestandardowe. Skrypt ten dodaje menu o nazwie "Wyodrębnij adresy URL" do paska menu arkusza kalkulacyjnego, z jednym elementem menu o nazwie "proces =extract_url (A1) formuły". Po kliknięciu, zastąpi on wszystkie zastosowania funkcji EXTRACT_URL
z samym adresem URL.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-22 06:43:37