我有一个工作表,其中在单元格中设置了超链接,但没有通过公式设置。单击该单元格时,在fx栏中仅显示该值。
我在网上搜索,但是到处都是通过使用getFormula()获取价值来提取超链接的信息。但就我而言,根本没有设置公式。
我可以在图像中看到超链接,但在公式/ fx栏中没有。
如何使用Apps脚本或任何公式获取该单元格的超链接?
答案 0 :(得分:7)
当一个单元格只有一个URL时,您可以使用以下简单脚本从该单元格中检索URL。
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var url = sheet.getRange()("A2").getRichTextValue().getLinkUrl();
来源:https://gist.github.com/tanaikech/d39b4b5ccc5a1d50f5b8b75febd807a6
答案 1 :(得分:2)
将包含带有超链接的单元格的Excel文件转换为Google Spreadsheet时,也可以看到这种情况。就我而言,我使用Sheets API检索网址。示例脚本如下。我认为可能有几种解决方案。因此,请将此视为其中之一。
使用此脚本时,请在Advanced Google Services和API控制台上启用Sheets API。您可以在here上查看有关如何启用Sheets API的信息。
var spreadsheetId = "### spreadsheetId ###";
var res = Sheets.Spreadsheets.get(spreadsheetId, {ranges: "Sheet1!A1:A10", fields: "sheets/data/rowData/values/hyperlink"});
var sheets = res.sheets;
for (var i = 0; i < sheets.length; i++) {
var data = sheets[i].data;
for (var j = 0; j < data.length; j++) {
var rowData = data[j].rowData;
for (var k = 0; k < rowData.length; k++) {
var values = rowData[k].values;
for (var l = 0; l < values.length; l++) {
Logger.log(values[l].hyperlink) // You can see the URL here.
}
}
}
}
spreadsheetId
。Sheet1!A1:A10
是一个示例。请根据您的情况设置范围。rowData
的每个元素都对应于行的索引。 values
的每个元素都对应于列的索引。如果这不是您想要的,请告诉我。我想修改它。
答案 2 :(得分:0)
我尝试了解决方案 2:
var urls = sheet.getRange('A1:A10').getRichTextValues().map( r => r[0].getLinkUrl() ) ;
我得到了一些链接,但其中大部分都为空。 我制作了解决方案 1 的更短版本,它产生了所有链接。
const id = SpreadsheetApp.getActive().getId() ;
let res = Sheets.Spreadsheets.get(id,
{ranges: "Sheet1!A1:A10", fields: "sheets/data/rowData/values/hyperlink"});
var urls = res.sheets[0].data[0].rowData.map(r => r.values[0].hyperlink) ;