连接Google App maker和Google Docs模板并制作PDF的方法

时间:2019-04-03 23:45:12

标签: google-docs google-app-maker

我正在尝试使用Google App Maker输入数据。我想将该数据导出到google docs模板并创建PDF。

我尝试了此链接

Document Merge with Google App Maker 但是我得到一个错误

Creating new record: (Error) : Invalid argument: replacement at 
models.Clients.onAfterCreateEvent:13
at NewPage.Form1.Form1Header.Form1CreateButton.onClick:2:19

Wed Apr 03 10:27:12 GMT-500 2019
Creating new record failed.


Wed Apr 03 10:27:12 GMT-500 2019
(Error) : Invalid argument: replacement'

''' 还有另一个表单发布链接Google App Maker - Creating a contract. Methods to use? 因此,我知道这是可能的,但是我是制作脚本的新手,无法弄清楚。

我尝试了在Stackoverflow上找到的多个不同脚本。

我希望能够从APP制造商的App中输入数据。比导出到Google文档模板。 我是App Script的新手,任何帮助将不胜感激 谢谢

'''

var templateId = 'your template ID';
var filename = 'Document for Customer ' + record.ClientName + new Date();

var copyFile = DriveApp.getFileById(templateId).makeCopy(filename);

var copyDoc = DocumentApp.openById(copyFile.getId());
var copyBody = copyDoc.getBody();
var fields = app.metadata.models.Clients.fields;
for (var i in fields) {
var text = '<<' + fields[i].name + '>>';
var data = record[fields[i].name];
copyBody.replaceText(text, data);
}

'''

我试图将App maker数据导入到Google文档模板中,而不是使用推定值代替占位符创建该文档的PDF。

我知道它可以链接到Google文档,但返回的值为undefined。我正在使用SQL数据库

var templateId = '1IbbrRJhYSnfEmgUD1GYrjxEHeyseGtQFx-G3CzEC4mI';
var filename = 'Document for Customer ' + record.ClientName + new Date();

var copyFile = DriveApp.getFileById(templateId).makeCopy(filename);

var copyDoc = DocumentApp.openById(copyFile.getId());
var copyBody = copyDoc.getBody();
var fields = app.metadata.models.Clients.fields;

for (var i in fields) {
var text = '<<' + fields[i].name.valueOf() + '>>';
var data = record[fields[i].item];
copyBody.replaceText(text, data);
}

copyDoc.saveAndClose();

2 个答案:

答案 0 :(得分:1)

我会尝试尽可能具体。我也是脚本和App Maker的新手,并将分享我在创建pdf文件和与App Maker一起工作方面的经验。这是我的第一个答案,希望它对您有用。

我知道您不想使用模板。如果您只想创建一个PDF文件,其中包含从应用程序本身获取的信息,我建议您检查App Maker示例https://developers.google.com/appmaker/samples/email-pdf/。该示例包含一个表单,单击按钮后,它将获取在应用程序中输入的数据,并发送一封电子邮件,其中包含从应用程序生成的pdf。

现在,就个人经验而言,我更喜欢使用模板,因为您可以自定义模板并可以发送个性化的pdf文件,但是,这取决于您生成此类pdf文件的目的。因此,这是根据我的经验得出的答复。

我使用了Google表格模板,为了能够修改此类模板,我不得不使用电子表格服务https://developers.google.com/apps-script/reference/spreadsheet/。您将学习如何访问Google表格以及如何从中修改每个单元格,以及如何修改文档中的特定表格。

我找到了https://gist.github.com/primaryobjects/6370689c6f5fd3799ea53f89551eced7,并给了我一个如何创建pdf的想法,这说明了如何生成pdf并将pdf文件存储到Google云端硬盘。另外,您还具有使用上述App Maker示例通过电子邮件发送电子邮件的想法。该项目是针对Google表格文档的,它为您创建了一个额外的菜单,供您导出当前的Google表格,如果需要https://developers.google.com/drive/api/v3/manage-downloads,则可以使用Drive API下载pdf。

我希望所有这些信息都有助于解决您的查询,由于我没有方便的所有代码,因此我将尝试查找该应用程序,为了在此处提供示例,我必须再次对其进行检查,但希望这有助于找到一种方法来实现您想要的。自从该应用程序在一段时间前创建以来,我将有更多时间深入研究我的代码,我将搜索我的代码并提供一些示例。

答案 1 :(得分:0)

从头开始后,我肯定有一些绑定错误的原因

var templateId = 'your template ID';
var filename = 'Document for Customer ' + record.ClientName + new Date();

var copyFile = DriveApp.getFileById(templateId).makeCopy(filename);

var copyDoc = DocumentApp.openById(copyFile.getId());
var copyBody = copyDoc.getBody();
var fields = app.metadata.models.Clients.fields;

for (var i in fields) {
var text = '<<' + fields[i].name + '>>';
var data = record[fields[i].name];
copyBody.replaceText(text, data);
}

copyDoc.saveAndClose();

来自链接的https://developers.google.com/apps-script/reference/spreadsheet/的操作正常