当前位置: 首页 > 知识库问答 >
问题:

应用程序脚本-将工作表超链接导出到文档

赖鸿羲
2023-03-14

我有一个google工作表——当出现一个新行时,我通过合并使用预定义模板将输出写入google文档。一切都在进行中,但我只知道如何使用。函数以实现合并,一些工作表列中的超链接将导出为纯文本。

在大量修改和抄袭代码之后(谢谢大家),我设法拼凑出以下函数:

function makeLinksClickable(document) {
        const URL_PATTERN = "https://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]" 
        const URL_PATTERN_LENGTH_CORECTION = "".length
        const body = document.getBody()
        var foundElement = body.findText(URL_PATTERN);
        while (foundElement != null) {  
          var foundText = foundElement.getElement().asText();
          const start = foundElement.getStartOffset();
          const end = foundElement.getEndOffsetInclusive() -  URL_PATTERN_LENGTH_CORECTION;
          const url = foundText.getText().substring(start,end+1)  
          foundText.setLinkUrl(url)
          foundElement = body.findText(URL_PATTERN, foundElement);
        }    
}

将所有列写入文档后,我对创建的文档调用此函数以查找超链接并使其超链接:),只要每个单元格仅包含一个超链接,我的函数就可以工作。当文档中有多个超链接时,它也可以工作。

但是,有些单元格可以有多个超链接,并将它们写入到文档中,每个超链接都有一行新行。虽然该函数可以正确地查找多个URL,并使它们在文档中可单击,但存在一个问题。例如,如果单元格中有2个超链接,它们将导出到文档中的2行,但在通过函数运行它们之后,这两个超链接现在将链接到同一个图像(第一个),即使每个超链接本身是来自原始单元格的唯一链接。

2个链接到同一图像的转换超链接

(注意-如果我不运行我的函数并将导出的超链接保留为文本。然后进入创建的文档并手动在导出的超链接的末端添加一个空格,然后它们变为蓝色并可单击并链接到正确的图像,在此之前我确实尝试通过编程方式添加空格,但也无法解决此问题)

我已经用尽了有限的编码能力,不明白为什么我的函数“似乎”能正确地通过每个超链接,却不能使它链接到文档中的正确图像。

任何帮助都将不胜感激。谢谢

// ----------------------------------------------------------------------

谢谢你花时间看这个,我会试着进一步解释这些问题。这是很难显示在这里,因为链接实际上正常工作时,复制在这里,他们只是在谷歌文档中行为不端。

导出行中的单元格具有多个用逗号分隔的超链接。它们作为文本字符串从单元格导出到文档,如下所示:

用于导出的单个图纸单元中的链接:

"超链接-1-as-a-string"(链接到图像1)

"超链接-2-as-a-string"(链接到图像2)

“hyperlink-3-as-a-string”(链接到图3)

“hyperlink-4-as-a-string”(链接到图4)

"超链接-5-as-a-string"(链接到图像5)

然后我运行我的函数,使它们再次可点击。

如果导出时同一单元格中有两个或多个超链接,则在运行该函数后会出现以下问题。

导出的文本链接由转换为可单击的超链接:

“hyperlink-1-as-a-string”(链接到图5)

“hyperlink-2-as-a-string”(链接到图5)

"超链接-3-as-a-string"(链接到图像5)

"超链接-4-as-a-string"(链接到图像5)

"超链接-5-as-a-string"(链接到图像5)

我“认为”发生的是,我的函数使所有5个超链接成为一个大超链接,恰好使用了最后一个超链接图像。如果我将URL复制并粘贴到单独的文档(如电子邮件)中,那么它们将显示为一个大的超链接,而不是5个单独的超链接。

// ---------------------------------------------------------------

该函数搜索实际上是google超链接的文本模式。(从https://etc开始)当找到一个超链接时,它计算出文本字符串末尾的长度,然后使用setLinkUrl()将超链接变成可单击的超链接。

如果只有一个文本超链接,则它可以工作。

如果有多个文本超链接,并用逗号分隔,则不存在。

共有1个答案

应和悦
2023-03-14

我想出了一些办法。这是我最后得到的,它基本上是由其他几个问题组合在一起的

function sortLinks(colId, mapPoint, myBody) {
  var urls = [];

  if (colId.includes(",")) {              // IE theres more than one URL
  var tmp = colId.split(",");
  urls = urls.concat(tmp);
  }
  else {
    urls[0] = colId;                 // 1 URL no "," add to array[0] 
  }
  if (urls.length > 0) {
    var tag = mapPoint;
    var newLine = "\n";
    var element = myBody.findText(tag);
    if (element) {
      var start = element.getStartOffset();
      var text = element.getElement().asText();
      text.deleteText(start, start + tag.length - 1);
      urls.forEach((url, index) => {                                                
      url = url.trim();
      var name = "Image-Video" + (index + 1);
      text.appendText(name).setLinkUrl(start, start + name.length - 1, URL);
      text.appendText(newLine);
      start = start + name.length + newLine.length;
    });
 }
 类似资料:
  • 在当前版本的Google Sheet中,要在单元格中插入超链接,可以执行以下操作 在新版Google Sheets中,超链接插入是不同的,您可以这样做。 但是,我有一个问题,在电子表格中插入的值不是我所期望的。在这张显示插入链接的图像中,在=HYPERLINK之前插入了一个“插入”——我不知道这是从哪里来的。有什么想法吗?

  • 演示网站:http://recipe-app.com/recipe/grilled-potato-salad演示应用:http://search-codelabs.appspot.com/codelabs/android-deep-linking 我的测试: 我已经从上面的链接安装了演示应用程序。我用谷歌搜索应用程序搜索了“烤土豆沙拉”,结果发现http://recipe-app.com/reci

  • 在谷歌工作表上,尝试根据特定单元格中的值隐藏/取消隐藏行,并尝试在AppsScript中为此编写脚本。发现一个隔离工作(如果B55=NO,则隐藏64行): 但我需要对多个单元格和多行使用相同的方法,只要我展开它,就只有代码的最后一部分有效,而不是第一部分: 从这里开始,B121号牢房开始工作,但我的B55停止工作。有什么提示吗?谢谢!

  • 我想知道如何将自定义页眉或页脚添加到使用谷歌应用程序脚本从谷歌工作表导出的PDF中。我想在页面中央添加一个页脚,上面写着“我的公司专有和机密”。 这是从图纸(即文件»下载为»PDF»标题)正常PDF导出中可用的功能 是否有任何额外的URL参数可以用来控制这些自定义字段? 目标页脚:

  • 我正在使用GoogleApps脚本将来自GoogleSheets的问题添加到GoogleForm中。列表从两个单独的数组中读取,并作为单独的网格类型问题添加。我还将工作表设置为表单结果的目标。 当我运行脚本时,表单得到了完美的更新。如果要添加10个项目,则在表单中添加10个问题。但是,在链接的表单响应表中,经常会添加标题为“[第1行]”的其他列。每次运行脚本时,附加列的数量及其位置都会发生变化。我

  • 问题内容: 是否有人知道一个脚本,该脚本可以选择对URL的所有文本引用,并自动将其替换为指向这些位置的锚标记? 注意:我想要这个是因为我不想浏览所有内容,并用锚标记将它们包装起来。 问题答案: 对我来说,这似乎是jQuery的完美任务。 …这样的事情浮现在我脑海: