Google apps script 应用程序脚本:如何从没有公式的单元格中获取超链接

Google apps script 应用程序脚本:如何从没有公式的单元格中获取超链接,google-apps-script,google-sheets,hyperlink,cell,google-sheets-formula,Google Apps Script,Google Sheets,Hyperlink,Cell,Google Sheets Formula,我有一张表格,超链接是在单元格中设置的,但不是通过公式设置的。单击单元格时,在“fx”栏中仅显示值 我在网上搜索,但到处都是,信息是使用getFormula()提取超链接 但就我而言,根本没有一套公式 我可以看到你们在图片中看到的超链接,但它不在“公式/fx”栏中 如何使用应用程序脚本或任何公式获取该单元格的超链接?当包含超链接单元格的Excel文件转换为Google电子表格时,也可以看到这种情况。在我的例子中,我使用Sheets API检索URL。下面是一个示例脚本。我认为可能有几种解决办法

我有一张表格,超链接是在单元格中设置的,但不是通过公式设置的。单击单元格时,在“fx”栏中仅显示值

我在网上搜索,但到处都是,信息是使用
getFormula()
提取超链接

但就我而言,根本没有一套公式

我可以看到你们在图片中看到的超链接,但它不在“公式/fx”栏中


如何使用应用程序脚本或任何公式获取该单元格的超链接?

当包含超链接单元格的Excel文件转换为Google电子表格时,也可以看到这种情况。在我的例子中,我使用Sheets API检索URL。下面是一个示例脚本。我认为可能有几种解决办法。所以,请把这看作是其中之一

使用此脚本时,请在高级Google服务和API控制台启用Sheets API。您可以在中查看如何启用工作表API。

示例脚本:
var spreadsheetId=“#######”;
var res=Sheets.Spreadsheets.get(电子表格ID,{ranges:“Sheet1!A1:A10”,字段:“Sheets/data/rowData/values/hyperlink”});
var表=res.sheets;
对于(变量i=0;i
注:
  • 请设置
    电子表格ID
  • Sheet1!A1:A10
    是一个示例。请根据您的情况设置范围
  • 在这种情况下,
    rowData
    的每个元素都对应于row的索引。
    值的每个元素都对应于列的索引
参考资料:

如果这不是你想要的,请告诉我。我想修改它。

当单元格只有一个URL时,您可以使用以下简单脚本从单元格中检索URL

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var url = sheet.getRange()("A2").getRichTextValue().getLinkUrl();
来源:

我尝试了解决方案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) ;

这就是我想要的。但它不应该是AdvanceAPI的一部分。在电子表格的类范围内应该有一些方法来轻松地得到这个。无论如何,谢谢@Irfan Alam感谢您的回复。我很高兴你的问题解决了。当我在SpreadsheetApp类中找到这种情况的方法时,我想添加它。
  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) ;