it-swarm.com.de

Wie extrahiere ich die URL aus dem Link in Google Sheets mithilfe einer Formel?

Ich habe eine Reihe von Hyperlinks von einer Website kopiert und in ein Google-Blatt eingefügt. Die Werte werden als verknüpfter Text und nicht als Hyperlinkformeln angezeigt. Sie werden jedoch weiterhin ordnungsgemäß verknüpft. Für jede Zeile versuche ich, NUR die URL (nicht den angezeigten Text) zu extrahieren und in die nebenstehende Spalte einzufügen. Wie lässt sich dies mit einer Formel erreichen?

Zum Beispiel:

=SOMEFUNCTION(cellThatHoldsLink, returnedURLOnly)

Dieses und ähnliche Szenarien gelten nicht, da die eingefügten Daten keine Formeln sind . Ich akzeptiere eine Skriptlösung (GAS) oder eine andere Lösung für diese Angelegenheit, würde es aber vorziehen, wenn dies mit einer Formel geschehen könnte . Ich habe Dutzende von HYPERLINK-Manipulationsskripten gefunden, aber nichts über dieses spezielle Szenario oder gar den Zugriff auf die Eigenschaft, die diese URL enthält. Vielen Dank.

13
iamtoc

Sie können importxml verwenden, um die gesamte Datentabelle und ihren Inhalt wie folgt abzurufen: 

=IMPORTXML(A1,"//tr")

daneben zogen wir die URL-Strings in den Tags ein

=IMPORTXML(A1,"//tr/td[1]/a/@href")

und schließlich die Zeichenfolgen mit der ursprünglichen Domäne verkettet, um Hyperlinks zu erstellen

=ARRAYFORMULA("http://www.bnilouisiana.com/"&INDIRECT("A2:A"&COUNTA(A2:A)))
0

Wenn Sie gerne Google Apps Script verwenden, verwenden Sie die unten stehende Funktion, um den Hyperlink aus einem Text zu erhalten. Wenn Sie die Zelle passieren, sollten Sie das doppelte Anführungszeichen verwenden. Beispiel: =GETURL("A4"), um den A4-Hyperlink zu erhalten. 

function GETURL(input) {
  var range = SpreadsheetApp.getActiveSheet().getRange(input);
  var url = /"(.*?)"/.exec(range.getFormulaR1C1())[1];
  return url;
}

hier zum Beispiel. 

Edit: Ignoriere diese Antwort. Dies funktioniert nur, wenn die URL in der Zelle verlinkt ist.

2
Abdul Hameed

Der eingebaute SpreadsheetApp -Dienst scheint das Herausziehen solcher URLs nicht zu unterstützen, der "Advanced" Sheets -Dienst jedoch.

Aktivieren Sie den Advanced Sheets-Dienst gemäß den Anweisungen von Google und versuchen Sie dann diesen Code:

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
          }
        }
      }
    }
  }
}

Dadurch wird eine benutzerdefinierte Funktion mit dem Namen EXTRACT_URL erstellt, die Sie mit einem Verweis auf die Zelle aufrufen sollten, die die Verknüpfung enthält. zum Beispiel =EXTRACT_URL(B3).

Leider funktioniert es nicht sofort, da der Advanced Sheets-Dienst nicht direkt von benutzerdefinierten Funktionen verwendet werden kann. Daher fügt dieses Skript der Menüleiste der Tabellenkalkulation ein Menü mit der Bezeichnung "Extrahiere URLs" hinzu, mit einem Menüeintrag mit der Bezeichnung "Formeln = EXTRACT_URL (A1)". Wenn Sie darauf klicken, werden alle Verwendungen der EXTRACT_URL-Funktion durch die URL selbst ersetzt.

1
Ryan Tarpine

Eine Antwort gefunden, die funktioniert in Google Groups (von Troy):

  1. Veröffentlichen Sie Ihre Tabelle (kopieren Sie die URL)
  2. Erstellen Sie eine neue Tabelle und verwenden Sie die IMPORTXML-Funktion (ersetzen Sie die URL durch die URL, die Sie in Schritt 1 erhalten).
  3. Sie erhalten die Daten - Sie können die Werte dann kopieren und an der gewünschten Stelle einfügen
  4. Veröffentlichung der Tabelle aufheben (wenn Sie nicht möchten, dass sie öffentlich ist)

Könnte per Skript gemacht werden, aber ich habe jetzt keine Zeit. :) 

1
DusanV

Schneller Weg, es zu tun Wenn die Zellreihen begrenzt sind --->

  1. klicken Sie mit der rechten Maustaste auf die Zelle und klicken Sie auf den Link Bearbeiten
  2. Entfernen Sie Text und klicken Sie auf Übernehmen
  3. Verwenden Sie f4 für jede nachfolgende Zelle

Bitte wenn du mehr dazu hast oder mit Auswahl der Zelle erledigen kannst. Gib mir Bescheid

0
Jayesh Mayekar

Ich konnte dieses Problem auf sehr einfache Weise für Jotform lösen.

Ich habe versucht, den Link Bearbeiten in eine Abfrage einzufügen, aber es würde mir nur den Text "Bearbeitung bearbeiten" geben.

Ich bemerkte jedoch, dass ich die Formular-ID in Spalte R hatte. Ich konnte dann den JotForm-Link kopieren und mit der Zellenreferenz " https://www.jotform.com/edit/ " & R2 kombinieren

0
Azriel Blumberg