【问题标题】:Replace Doc text with text and link用文本和链接替换文档文本
【发布时间】:2019-10-20 12:43:21
【问题描述】:

我正在尝试用替代文本和基础链接替换 ​​Google 文档中的某些文本。 (该链接指向 Google SS 中的一个单元格。)

我正在处理Google Apps Script Make text a clickable URL using replaceText()的答案

脚本运行,但最后一行出现以下错误:

“执行失败:索引(114)必须小于内容长度(8)。(第116行,文件“代码”)”

“114”是指网址的长度。 “8”是指替换文本的长度,顺便说一句,“新歌”。

看来这种做法有个致命的缺陷,就是链接(URL)的长度不能超过被替换的文本的长度。 (我无法想象情况确实如此,但我看不到解决问题的方法。)我已经搜索了我使用的代码的替代方法,但没有找到。

注意:以下任何未在此脚本中定义的变量,都在本节前面的脚本中定义(为简洁起见,我省略了)。所有这些变量都正常工作。错误总是发生在下面脚本的最后一行。

var titleUrl = titleLink;
var targetString = "Song Title"
var replacementString = songTitle
var element = body.findText(targetString);
var start = element.getStartOffset();
var text = element.getElement().asText();
text.replaceText(targetString, replacementString  );
text.setLinkUrl(start, start+titleUrl.length, titleUrl);

我希望将旧文本“歌曲标题”替换为“新歌曲”,并将“新歌曲”作为指向 Google 表格上单元格的可点击链接。

更新

关闭这个循环;最终代码为:

var titleUrl = titleLink;
var targetString = "Song Title"
var replacementString = songTitle
var element = body.findText(targetString);
var text = element.getElement().asText();
text.replaceText(targetString, replacementString  );
text.setLinkUrl(titleUrl);

【问题讨论】:

  • 您能否提供一个示例文档和脚本来复制您的问题?当然,请删除您的个人信息。

标签: google-apps-script


【解决方案1】:

我认为您正在尝试使用无效参数 start+titleUrl.length 调用 setLinkUrl()。此方法中的第二个参数指的是 text 长度,而不是 link 长度。您现在正在做的是尝试将链接设置为 114 - text.getText().length 比您的实际文本“新歌”长的文本。

【讨论】:

  • 你说的太对了。我在 [stackoverflow.com/questions/21211804/… 上发布的这个问题的参考“答案”中投入了很多股票,我没有仔细阅读 Google 文档。刚刚做到了,当然你是对的。只有另一种setLinkUrl() 方法(在我的情况下),它是setLinkUrl(titleUrl)。像魅力一样工作。又解决了一个问题。又学到了一课*“RTFM”!)。感谢您的帮助。
  • 是的,我也想过问你更简单的setLinkUrl(titleUrl) 方法是否可行,但假设你想保留部分使文本成为链接的能力。很高兴我能帮上忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
  • 1970-01-01
  • 2018-03-22
  • 1970-01-01
  • 2017-10-15
  • 1970-01-01
相关资源
最近更新 更多