如何使用Google Apps脚本向电子表格单元格添加链接

dmb*_*nim 3 google-sheets google-apps-script

可以通过用户界面向谷歌电子表格中的单元格添加"链接".我想使用Google Apps脚本执行相同的操作.我期待在Range类上有一个方法,但是看不到它.有谁知道如何做到这一点?

Gui*_*Tod 15

自 2020 年 6 月起,可以选择设置富文本链接网址。所以现在您可以执行以下操作:

const sheet = SpreadsheetApp.getActiveSheet();
const rangeToBeLinked = sheet.getRange('A2');
const rangeToAddLink = sheet.getRange('D32')
const richText = SpreadsheetApp.newRichTextValue()
    .setText('Click to go to ' + rangeToBeLinked.getA1Notation())
    .setLinkUrl('#gid=' + sheet.getSheetId() + '&range=' + 'A' + rangeToBeLinked.getRow())
    .build();
rangeToAddLink.setRichTextValue(richText);
Run Code Online (Sandbox Code Playgroud)

结果是一个带有文本的单元格,其中包含指向您建立的 Web 的链接。与最终在单元格内留下一个允许重定向到另一个页面的公式的 HYPERLINK 函数非常不同。

  • 我刚刚使用“const”测试了这个解决方案,它工作得很好。谢谢@Guilherme (2认同)

Ger*_*eio 6

RANGE.setFormula加上HYPERLINK公式应该可以满足您的需求.

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var cell = sheet.getRange("B5");
cell.setFormula('=HYPERLINK("http://www.google.com/","Google")');
Run Code Online (Sandbox Code Playgroud)

  • 没有使用公式就无法添加它吗?通过UI添加超链接或从网络粘贴时,它仍然具有超链接但没有公式 (2认同)

小智 5

我今天遇到了这个问题。这是我的解决方案。这是 ES6,因此您需要为 Apps 脚本运行新的 V8 引擎。此功能专门针对选定的单元格范围。

function hyperlink(){
  var activeSheet = SpreadsheetApp.getActiveSheet();
  var a1 = activeSheet.getSelection().getActiveRange().getA1Notation();
  var values = activeSheet.getRange(a1).getValues();
  var hyperVal= values.map(row=> row.map(col=> `=HYPERLINK("${col}","${col}")` ));
  activeSheet.getRange(a1).setValues(hyperVal);
  activeSheet.getRange(a1).setShowHyperlink(true); /* I initially just tried doing this, but without setting the HYPERLINK formula, it did nothing */
}
Run Code Online (Sandbox Code Playgroud)