ウェブサイトから一連のハイパーリンクをコピーして、Googleシートに貼り付けました。値は、ハイパーリンク式ではなく、リンクされたテキストとして表示され、引き続き正しくリンクされます。行ごとに、(フレンドリーテキストではなく)URLのみを抽出し、隣接する列に挿入しようとしています。数式を使用してこれをどのように達成できますか?
例えば:
=SOMEFUNCTION(cellThatHoldsLink, returnedURLOnly)
このシナリオおよび同様のシナリオ は、貼り付けられたデータが数式ではないため適用されません。スクリプト(GAS)ソリューション、またはその問題のソリューションを受け入れますが、式を使用してそれを行うことができれば好まれます。何十ものHYPERLINK操作スクリプトを見つけましたが、この特定のシナリオでは、またはそのURLを保持しているプロパティにアクセスする方法すらありません。ありがとう。
Importxmlを使用して、データテーブル全体とそのコンテンツを取得できます。
=IMPORTXML(A1,"//tr")
その横に、タグのurl文字列を引き込みました
=IMPORTXML(A1,"//tr/td[1]/a/@href")
最後に、文字列を元のドメインと連結してハイパーリンクを作成しました
=ARRAYFORMULA("http://www.bnilouisiana.com/"&INDIRECT("A2:A"&COUNTA(A2:A)))
Google Apps Scriptを使用したい場合は、以下の関数を使用してテキストからハイパーリンクを取得します。セルを渡すときは、二重引用符で送信する必要があります。例:=GETURL("A4")
はA4ハイパーリンクを取得します。
function GETURL(input) {
var range = SpreadsheetApp.getActiveSheet().getRange(input);
var url = /"(.*?)"/.exec(range.getFormulaR1C1())[1];
return url;
}
here を参照してください。
編集:この回答は無視してください。これは、URLがセルにリンクされている場合にのみ機能します。
組み込みの SpreadsheetApp サービスはそのようなURLのプルをサポートしていないようですが、 “ Advanced” Sheets サービスはサポートしています。
Googleの指示 に従ってAdvanced Sheetsサービスを有効にしてから、次のコードを試してください。
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)
など。
残念ながら、高度なスプレッドシートサービス 直接使用することはできません カスタム関数により、すぐには機能しません。そのため、このスクリプトは、「Process = EXTRACT_URL(A1)formulas」というラベルの付いた1つのメニュー項目とともに、「Extract URLs」というメニューをスプレッドシートメニューバーに追加します。クリックすると、EXTRACT_URL
関数のすべての使用がURLに置き換えられます。
役立つ答えを見つけました Googleグループ上 (by Troy):
スクリプトで実行できますが、今は時間がありません。 :)
セルの行が制限されている場合の簡単な方法--->
あなたがこれにもっと持っているか、セルの選択で行うことができるならお願いします。お知らせ下さい
これを非常に簡単な方法でJotformで解決できました。
クエリに[編集]リンクを含めることを検討していましたが、「送信の編集」というテキストのみが表示されます。
しかし、R列にフォームIDがあることに気付きました。その後、JotFormリンクをコピーして、セル参照「 https://www.jotform.com/edit/ 」と組み合わせることができました&R2