我正在使用谷歌应用程序脚本来自动将从谷歌表单收集的响应转换为具有某种格式的谷歌文档的过程。我的脚本迭代电子表格行,根据索引对每个单元格进行不同的处理。这是电子表格的视觉效果以及我想在谷歌文档中创建的结果文本:
电子表格“回复”
| | What's your favorite animal? | when did you graduate? | Will you come to the party?|
| Janice | dogs | 1992 | yes |
| Soyoung | I like frogs | 2003 | I'll be there |
| Cary | not sure! | x | I can't come :( |
文档“格式化回复”内部:
贾妮丝
你最喜欢什么动物?:狗
你什么时候毕业的?:1992年
你会来参加聚会吗?:会
秀英
你最喜欢什么动物?:狗
你什么时候毕业的?:2003年
你会来参加聚会吗?:我会在那里
卡里
你最喜欢的动物是什么?:不确定!
你什么时候毕业的?:
你会来参加聚会吗?:我不能来:(
目前脚本可以做所有事情,除了粗体问题。我只是不知道如何只粗体只是问题。
我在documentation上找到了 setBold() 函数,但似乎我只能将它与 Text 对象一起使用,而且我无法弄清楚如何将其应用到我已经实现脚本的方式中。我使用
appendParagraph()
在文档中构建内容行,因为内容需要按顺序排列且位于同一行...
我找到了this帖子,我尝试按照他们所做的工作,但仍然使用
appendParagraph()
,但它不起作用。这是我在文档中添加文本时遵循的基本格式,如果有任何建议,我将不胜感激。
// for each user, the header is the question and the cell holds the user's response to that question
var header = headers[cellIndex];
body.appendParagraph(header + " " + cell.toString());
请注意,在复制所有结果之前,脚本会擦除目标文档(脚本中的常量
document
)。选择目标文档时请记住这一点。
/**
* +---------------------------------------------+
* | Form Results to Doc Using Doc as Template |
* +---------------------------------------------+
*
* 2024-05-12
*
* https://stackoverflow.com/questions/78451410/
* How can I append a paragraph to a document with some bold and
* some regular text using google apps script?
*
*/
const sheetId = "1KZHhP22w39hr-xvgcuHK4LUZ5epefFkIDQ5XSTMR7EY";
const templateId = "1tnHovAnt4EAyxOHhbbWy-6WKeMzPCCQk0E13UDPkjis";
const documentId = "1MO0cerkTzSTXhsc2LO0Z2FjHKlO0cOtwhbTXm7nqgVc";
const setTimeZone = "EST"
const dateFormat = "MMMM dd, yyyy h:mm a";
function formResultsToDocUsingTemplate () {
const ss = SpreadsheetApp.openById(sheetId);
const template = DocumentApp.openById(templateId);
const document = DocumentApp.openById(documentId);
const body = document.getBody();
const templateBody = template.getBody();
const paragraphs = templateBody.getParagraphs();
const range = ss.getActiveSheet().getDataRange();
const date = Utilities.formatDate(new Date(),setTimeZone,dateFormat);
body.clear() && body.insertParagraph(0, date) && body.insertHorizontalRule(1);
range.getValues().forEach(function(r, i) {
i && r.forEach(function (c, j) {
let txt = paragraphs[j].copy().replaceText("%"+(j+1)+"%",c);
(j == 3) && txt.appendText('\n');
body.appendParagraph(txt);
});
});
}