google-apps-script - 邮件与文本框合并
问题描述
所以我在这里有一个简单的、有效的邮件合并脚本。
我想在“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 脚本没有允许您在文档文件中创建文本框的方法。
解释:
在 Google Docs 中,文本框实际上是InlineDrawing
包含文本的对象 - 在图形界面中,您可以通过跟随Insert > Drawing > + New
然后单击Text box
工具栏中的图标来创建它们。正如您在 Google Docs的Apps 脚本文档中所见,没有创建方法,只有一种复制现有绘图对象的方法。
功能要求:
从好的方面来说,谷歌知道这一点!正如您在此处和此处的问题跟踪器上看到的那样,已经提出了创建和修改图纸的功能请求。您可以在左上角给这些功能请求一个星号 (☆),让 Google 知道更多人希望这个请求。
参考:
推荐阅读
- c# - CS0103:当前上下文中不存在该名称?
- php - 使用变量作为文件名在 php 中不起作用
- c# - 在控制器操作 ASP.NET Core 中执行 SQL 查询
- cookies - JASIG CAST - 旧的 TGT TGC Cookie 重新验证导致登录循环
- mongodb - 检查数组的任何元素是否与 MongoDB 文档数组中的任何元素匹配
- javascript - 滚动 tbody 时修复表头,thead 列与 tbody 列对齐
- c# - c#如何检查.txt是否没有改变
- php - 用于验证电子邮件的正则表达式并添加点符号 2
- python - 如何通过pyomo设置glpk求解器使用的分支方法?
- php - 在 AD LDAP 中查找用户