【问题标题】:Extract Multiple Hyperlinks from a single Google sheet cell and append their respective URLs in the cell从单个 Google 表格单元格中提取多个超链接,并将它们各自的 URL 附加到单元格中
【发布时间】:2021-10-13 14:34:39
【问题描述】:

我有一个谷歌表,每个单元格都包含多个超链接。

我的目标是:

  1. 从单元格 A1(或活动单元格/范围)中提取 url
  2. 保留现有单元格内容并将提取的 URL 附加到现有内容(在同一单元格中)
  3. 能够为一个范围而不是单独为每个单元格执行此操作

目前,我的代码适用于只有一个超链接的一个单元格,但会出现错误

TypeError: 无法读取未定义的属性“0”

当一个单元格包含多个超链接时。

function URL() {
  var spreadsheet =SpreadsheetApp.getActive(); 
  var sheet = spreadsheet.getActiveSheet();
  var id = spreadsheet.getId();
  var range = sheet.getActiveRange();
  var linkArray = Sheets.Spreadsheets.get(id, {ranges: sheet.getName() + "!" + 
  range.getA1Notation(), fields: "sheets/data/rowData/values/hyperlink"});
  var link = linkArray.sheets[0].data[0].rowData[0].values[0].hyperlink;
  var cellInE = sheet.getRange(range.getRow(), 5);
  var cellEcontent = sheet.getRange(range.getRow(), 5).getValues()
  var appnded = cellEcontent + String.fromCharCode(10) + link;
  cellInE.setValue(appnded);
}

我对谷歌应用脚​​本和一般编码不熟悉。任何帮助将不胜感激。

【问题讨论】:

  • 欢迎来到Stack Overflow。请添加一些示例数据并明确说明“超链接”是否可点击。还要添加完整的文本错误消息(缺少文件名和行号)。

标签: google-apps-script google-sheets hyperlink google-sheets-api


【解决方案1】:

您需要正确迭代linkArray,我找到了example 并做了一些简短的修改。它对我有用。

function myFunction() {
  var spreadsheetId = "1olBuawXzIxriAhWM2_e42LzjWM2fh_1aWitZkJMErWk";
  let rangeToSet = SpreadsheetApp.openById(spreadsheetId).getSheetByName("Sheet1");
  var res = Sheets.Spreadsheets.get(spreadsheetId, { ranges: "Sheet1!A1:C3", 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.
          // k is Row number
          //l is column number
          rangeToSet.getRange(k + 1, l + 1).setValue(values[l].hyperlink);
        }
      }
    }
  }
}

之前:

现在:

【讨论】:

  • 非常感谢您的回复!当我运行您的代码时,它说:“错误:TypeError:无法读取未定义的属性'长度'”另外,当我单击调试并浏览变量时,我似乎无法在其中找到“rowData”。我看到“getRowData”。我正在查看 res/sheets[0]/data[0]....
  • 查看下一个: 1. 在范围内:"Sheet1!A1:C3" 查看它是否具有实名表和范围。 2. 在 Google Apps 脚本编辑器的“服务”选项中启用高级 Sheets Api
猜你喜欢
  • 1970-01-01
  • 2012-10-19
  • 2022-11-11
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多