首页 > 解决方案 > 有没有一种简单的方法可以使用 google Sheets API 获取 google sheet 中单元格的底层 URL?

问题描述

我正在使用 Google 表格和幻灯片 API 从表格中读取数据并创建 Google 幻灯片。

有些单元格包含链接,我也希望能够将它们显示为幻灯片中的链接。有没有办法使用 Google Sheets API 获取单元格的超链接?

我通过以下方式获取单元格中的值:

var ss = SpreadsheetApp.openByUrl(dataSpreadsheetUrl); 
var sheet = ss.getSheetByName('countryData'); 
// Use the Sheets API to load data, one record per row. 
var values = sheet.getRange('A2:W10').getValues(); 
for (var i = 0; i < values.length; ++i) { 
    var row = values[i]; var country = row[0];
    //name in column 1 
    Logger.log(country);
} 

是否有关于值的方法可以调用以获取该特定单元格上的超链接?(例如,对于阿富汗的价值,工作表上的超链接是 Afg 的 BBC 页面。)

我正在使用以下内容替换幻灯片中的令牌国家/地区: shape.getText().replaceAllText('{{country}}',country);

标签: google-apps-scripthyperlinkgoogle-sheets-apigoogle-slides-api

解决方案


从您的附加信息中,我看到您正在使用 Apps 脚本。

要获取国家/地区链接的url,您可以使用该Range.getFormula()方法。但是,您需要使用公式: =HYPERLINK(url, [linkLabel])在您的工作表中。然后,您可以使用以下代码,例如,使用 Apps 脚本获取 url:

function getHyperlinkUrl(range) {
  // The range should use the sheets formula: `=HYPERLINK(url,[linkLabel])`
  // Example: HYPERLINK("http://www.venezuela.com/", "Venezuela")
  
  var url = range.getFormula().split('"')[1];
  Logger.log(url);
  // Output: http://www.venezuela.com/
}

使用该值,您可以构建textRun如下对象:

"textRun": {
    "content": "<YOUR-HYPERLINK-FROM-SHEETS>",
    "style": {
        "foregroundColor": {
            "opaqueColor": {
                "themeColor": "HYPERLINK"
            }
        },
        "link": {
            "url": "<YOUR-HYPERLINK-FROM-SHEETS>"
        },
        "underline": true
    }

并使用 方法将其插入幻灯片presentations.batchUpdate


参考:


推荐阅读