【问题标题】:Auto hyperlink in multiple line/multiple links cell多行/多链接单元格中的自动超链接
【发布时间】:2021-06-30 14:37:31
【问题描述】:

从 CSV 文件导入的大文件(+1k 行)。 文件有一列文件地址如下:

http://www.whatever.whatever/file1.jpg

有些行在该列中有多个文件地址,用“换行符”分隔,所以有些行是

http://www.whatever.whatever/file2.jpg
http://www.whatever.whatever/file3.jpg
http://www.whatever.whatever/file4.jpg

等等……

带有 1 个地址的行被谷歌表格自动转换为超链接,这正是我想要的。 具有多个文件地址的行保持原样,这就是问题所在。 如何自动链接具有多个文件地址的行,而不必一一进行? 谢谢。

【问题讨论】:

标签: google-apps-script google-sheets google-sheets-formula google-apps


【解决方案1】:

你可以参考这个示例代码:

function addHyperlink(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  var links = sheet.getRange(1,1,sheet.getLastRow(),1).getValues().flat();

  links.forEach((cellLink,index) => {
    Logger.log(cellLink);
    Logger.log(cellLink.includes('\n'));
    
    //Check if cell value has multiple links (contains line break)
    if(cellLink.includes('\n')){
      var tmpUrl = cellLink.split('\n');
      var rText = SpreadsheetApp.newRichTextValue().setText(cellLink);
      var startOffset = 0;
      tmpUrl.forEach(url=>{
        Logger.log(url);
        Logger.log(url.length);
        Logger.log(startOffset);
        rText.setLinkUrl(startOffset,(startOffset+url.length),url);
        startOffset = startOffset + url.length + 1;
      });
      var value = rText.build();
      sheet.getRange(index + 1,1).setRichTextValue(value);
    }
  });

}

它有什么作用?

  1. 获取 A 列中的所有单元格值。使用 array.flat() 将二维数组更改为一维数组值
  2. 检查每个值是否包含使用array.includes() 的换行符
  3. 如果找到多个 url,将每个 url 拆分为一个临时数组变量。
  4. 使用SpreadsheetApp.newRichTextValue() 创建一个RichTextValueBuilder。使用 setText(text) 根据原始单元格的值设置文本
  5. 循环每个单独的 url 以获取其 url 长度,用于使用 setLinkUrl(startOffset, endOffset, linkUrl) 设置超链接的 start offsetend offset。每次处理 url 时调整start offset
  6. 使用build() 生成RichTextValue。使用setRichTextValue(value) 设置单元格范围富文本值

输出:

之前:

之后:

【讨论】:

  • 如果您遇到有关所提供解决方案的一些问题,请告诉我
  • 无论如何我可以给超链接一个连续的名称,如“链接 1”、“链接 2”...?一些单元格有超过 20 个文件,正如您从屏幕截图中看到的那样,很难跟踪您打开的文件和未打开的文件,因为您只能读取地址的开头。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 2020-10-16
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
相关资源
最近更新 更多