【问题标题】:google app script - search and replace text on google document谷歌应用脚​​本 - 搜索和替换谷歌文档上的文本
【发布时间】:2015-06-20 16:04:13
【问题描述】:

我正在使用以下代码替换谷歌文档上的文本:

var sampleDoc = DocumentApp.openById(copyId),
var docBody = sampleDoc.getBody();  
docBody.replaceText('%sample_placeholder%','some text');

一切正常,但这次我需要在图像上放置文本,所以基本上我在Insert > Drawing 上插入图像时将%sample_placeholder% 放在Text Box 上。上面的代码不再有效。

关于如何在文本框中搜索和替换文本有什么想法吗?

提前致谢!


对此有任何解决方法吗?

附加信息: 要放在图像上的文本来自用户输入。图像实际上是一个矩形标签标签框(用于标记事物),中间有空间,可以放入文本。


这个想法是将带有图像和图像上的文本(我们将文本称为文本占位符)的 Google 文档用作模板。此 Google 文档模板正在由 Google Apps 脚本重新复制,应将文本占位符替换为来自用户的输入并保存为单独的文件。

它看起来像这样(我得到了一个设计师创建的图像),文本将放在图像的中间。

【问题讨论】:

  • 我很确定您在谈论绘图内的文本框,但您的问题并不清楚。您能否添加更多信息,也许是屏幕截图,以使其清楚? (遗憾的是,如果它在绘图中,Google Apps 脚本目前无法访问它。)
  • 是的,我通过插入>绘图添加了图像,并在绘图上添加了一个文本框。在可通过 Google Apps 脚本访问的图像上添加文本的任何其他方式?
  • 很遗憾这是不可能的......
  • 有什么解决办法吗?

标签: google-apps-script google-docs


【解决方案1】:

由于没有脚本访问 google 绘图,因此无法在图像上方添加文本。您可以尝试一种可能的解决方法。

如果只有几个可能的图像/文本组合,一种解决方案是为每个可能的组合创建一个图像并将其托管在一个文件夹中。然后,您只需获取带有适当文本的图像并将其插入即可。

我自己以前用过这个(总共有 20-30 个图像组合)。这是我之前使用过的一些代码,从上面与你的代码拼凑在一起:

function getImage(imageName, copyId){
  var sampleDoc = DocumentApp.openById(copyId);
  var docBody = sampleDoc.getBody();
  var imageDest = //pick element which can accept image (table cell, paragraph, etc);

  imageFolder = DriveApp.getFolderById('Your_folder_ID_here');
  image = imageFolder.getFilesByName(imageName).next().getAs('image/png');
  imageDest.insertInlineImage(0, image);
}

注意:图片名称应与文件夹中的名称匹配,例如:“image1_Text1.png”、“image1_Text2.png”等。只需确保您的图片名称易于理解,无需查看图片即可。

最困难的部分是为图像找到合适的插入点,因为文档结构很快就会变得棘手。为了帮助解决这个问题,我编写了一个小实用程序脚本来获取文档的子元素,以帮助更好地理解底层结构。随意使用它:

function getDocElements() {
  var doc = DocumentApp.openById(copyId),
      body = doc.getBody(),
      numElements = doc.getNumChildren(),
      elements = [];

  for (var i = 0; i < numElements; ++i){
      var element = doc.getChild(i),
          type = element.getType();
    Logger.log(i + " : "+type);}
}

尽管这是一种解决方法,但只要您有有限数量的潜在图像/文本组合,它就可以让您创建所需的效果。

【讨论】:

  • 嗨,布拉德,谢谢。不幸的是,文本将来自用户输入。你会不会有更多的想法?再次感谢
  • 图像的目标是什么并在其上添加文本?它在您的文档或工作流程中实现什么目的?了解这一点可能有助于潜在的解决方法。
  • 感谢@Brady,我已更新问题以提供更多详细信息。
  • 您能否提供某种屏幕截图,以便我了解您想要完成的工作的感受?解决方案是否必须使用图像,或者是否可以更简单,例如带有粗边框和选择背景/文本颜色的 1 单元格表格?然后,您可以轻松地使用替换文本方法。
  • 我已更新我的问题以包含示例图像。好主意啊!虽然我在桌子周围玩,但我无法让它看起来像发给我的那张。有什么想法吗?
【解决方案2】:

使用SlideApp 代替DocumentApp 并使用ReplaceAllText 函数。之后saveAndClose() 文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    相关资源
    最近更新 更多