gpt4 book ai didi

javascript - Google Sheet 到 Doc 超链接显示

转载 作者:行者123 更新时间:2023-11-30 20:33:36 26 4
gpt4 key购买 nike

上下文:我正在将 G 表单数据插入 G 工作表,然后将新行附加到我在 G 文档上的表格中。我想在 Google 文档表的最后一列中提供一个带有“编辑”一词的超链接。

我想实现 .link 的功能,但它插入了在文档中不起作用的 html。 https://www.w3schools.com/jsref/jsref_link.asp

这是我直接在 G 表中的脚本(在表单提交时):

  // Grab the Table
var body = DocumentApp.openById('theId').getBody(),
searchElement = body.findElement(DocumentApp.ElementType.TABLE),
element = searchElement.getElement(),
table = element.asTable();

// Wait for row insertion to finish, so that sheet.getLastRow() method gets the updated number of rows
Utilities.sleep(1000); // 1 second

// Get the last row ID
var mySs = SpreadsheetApp.openById('sheetId').getSheets()[0];
var lastRowId = mySs.getLastRow();
var hyperlink = mySs.getRange('L' + lastRowId).getValue();

// Insert the Row
var cells = [lastRowId, hyperlink];
var addRow = table.appendTableRow();
cells.forEach(function(e, i){
addRow.insertTableCell(i, e);
});

body.saveAndClose();

所以现在它直接将超链接添加到 google 表单。而我想将单元格数组中的当前超链接变量切换为一个实际的超链接,上面写着“编辑”,它具有超链接变量 URL。

我尝试直接从 G 表单添加脚本数据 Example

var hyperlink = '=HYPERLINK("www.google.com", "Google")';

有效并将超链接插入到 G 工作表。问题是它不能然后把它带到 G Doc。我想可能是因为 G Sheet 公式无法提取到 G Doc Tables?

最佳答案

我找不到添加单元格值时直接给出链接的方法。那么这个修改怎么样呢?

修改点:

  • 添加单元格值后,它使用 setLinkUrl() 设置链接。
  • 我认为 body.saveAndClose() 发生了错误。请对文档使用saveAndClose()

修改后的脚本:

// Grab the Table
var doc = DocumentApp.openById('theId');
var body = doc.getBody(),
searchElement = body.findElement(DocumentApp.ElementType.TABLE),
element = searchElement.getElement(),
table = element.asTable();

// Wait for row insertion to finish, so that sheet.getLastRow() method gets the updated number of rows
Utilities.sleep(1000); // 1 second

// Get the last row ID
var mySs = SpreadsheetApp.openById('sheetId').getSheets()[0];
var lastRowId = mySs.getLastRow();
var hyperlink = mySs.getRange('L' + lastRowId).getValue(); // Sample is '=HYPERLINK("www.google.com", "Google")'
// var hyperlink = '=HYPERLINK("www.google.com", "Google")'; // If the error related to LINK occurs, please use this line instead of above hyperlink.
var link = hyperlink.match(/"(.*?)"/g); // Added

// Insert the Row
var cells = [lastRowId, theDate, comment, link[1].replace(/"/g, "")]; // Modified
var addRow = table.appendTableRow();
cells.forEach(function(e, i){
addRow.insertTableCell(i, e);
});
table.getCell(table.getNumRows() - 1, cells.length - 1).setLinkUrl(link[0].replace(/"/g, "")); // Added

doc.saveAndClose();

注意事项:

  • theDatecomment 未在您的问题脚本中声明。
    • 请在运行此示例脚本之前再次检查。
  • 在此示例脚本中,它假设 mySs.getRange('L' + lastRowId).getValue() 检索的值是字符串值,如 =HYPERLINK("www. google.com", "Google").因此 URL 和链接字符串由 "(.*?)" 的正则表达式检索。
    • 如果 mySs.getRange('L' + lastRowId).getValue() 获取的值与此不同,请修改正则表达式。
  • 如果要更改cells数组中LINK的索引,请修改。

引用:

如果我误解了你的问题,我很抱歉。

编辑:

// Grab the Table
var doc = DocumentApp.openById('theId');
var body = doc.getBody(),
searchElement = body.findElement(DocumentApp.ElementType.TABLE),
element = searchElement.getElement(),
table = element.asTable();

// Wait for row insertion to finish, so that sheet.getLastRow() method gets the updated number of rows
Utilities.sleep(1000); // 1 second

// Get the last row ID
var mySs = SpreadsheetApp.openById('sheetId').getSheets()[0];
var lastRowId = mySs.getLastRow();

// --- Following part was modified ---
var url = 'url.com'; // Added
var linkText = 'Edit'; // Added
// Insert the Row
var cells = [lastRowId, theDate, comment, linkText]; // Modified
var addRow = table.appendTableRow();
cells.forEach(function(e, i){
addRow.insertTableCell(i, e);
});
table.getCell(table.getNumRows() - 1, cells.length - 1).setLinkUrl(url); // Modified

doc.saveAndClose();

关于javascript - Google Sheet 到 Doc 超链接显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50071909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com