首页 > 解决方案 > 邮件与文本框合并

问题描述

所以我在这里有一个简单的、有效的邮件合并脚本。

我想在“doctemplate”谷歌文档文件中引入文本框。它从“createMailMerge”函数中获取输出元素,并将它们输入到文本框中。

我不知道该怎么做。

顺便说一句,这不是我的代码,链接到 youtube 视频:https ://www.youtube.com/watch?v=QNPPEB64QbI&t=1616s

function myFunction() {
  var doctemplateId = "1ndllkTur5tZgLUw5dO-UTh5VVOVWEN8I5JkZeJEDKEU";
  var docFinalId = "1xQlmVtLDBI7SmcmlF9axmnWbnNNMAk6tOJTuYqslCsE";
  var wsId = "16F4ubVJ8Hlj5a3euvL1U8vxPbCV7FWl4w-4y3GmRVSo";

  var doctemplate = DocumentApp.openById(doctemplateId);
  var docFinal = DocumentApp.openById(docFinalId);
  var ws = SpreadsheetApp.openById(wsId).getSheetByName("data1");

  var data = ws.getRange(2, 1, ws.getLastRow() - 1, 7).getValues();
  var templateParagraphs = doctemplate.getBody().getParagraphs();

  docFinal.getBody().clear();
  data.forEach(function(r){
    createMailMerge(r[0], r[1], r[2],r[3], r[4], r[5], r[6], templateParagraphs, docFinal);    
  });  
}

function createMailMerge(first, last, city, state,street, apt, zip, templateParagraphs, docFinal) {
  templateParagraphs.forEach(function(p) {
    docFinal.getBody().appendParagraph(
      p
      .copy()
      .replaceText("{first}", first)
      .replaceText("{last}", last)
      .replaceText("{city}", city)
      .replaceText("{state}", state)
      .replaceText("{street}", street)
      .replaceText("{apt}", apt)
      .replaceText("{zip}", zip)
      );
  });
}

标签: google-apps-scriptgoogle-docs

解决方案


回答:

不幸的是,这无法完成 - Google Apps 脚本没有允许您在文档文件中创建文本框的方法。

解释:

在 Google Docs 中,文本框实际上是InlineDrawing包含文本的对象 - 在图形界面中,您可以通过跟随Insert > Drawing > + New然后单击Text box工具栏中的图标来创建它们。正如您在 Google Docs的Apps 脚本文档中所见,没有创建方法,只有一种复制现有绘图对象的方法。

功能要求:

从好的方面来说,谷歌知道这一点!正如您在此处此处的问题跟踪器上看到的那样,已经提出了创建和修改图纸的功能请求。您可以在左上角给这些功能请求一个星号 (☆),让 Google 知道更多人希望这个请求。

参考:


推荐阅读