从电子表格数据行生成文档页面
Generate Doc pages from rows of spreadsheet data
我通过 SquareSpace 为当地的运动营制作了一个网页,注册页面将所有条目保存到云端硬盘中的 Google Spreadsheet。我想在 spreadsheet:
中从这里转换文档
1. name | currentgrade | parentorguardianname
2. Joe Smith | 7 | Mike Smith
3. Jenny Lee | 5 | Janet Lee
Google 文档
Name: Joe Smith
Grade: 7
Parent: Mike Smith
<page break>
Name: Jenny Lee
Grade: 6
Parent: Janet Lee
我需要重命名文档中的 headers 以便它们可读,然后在每一行上使用它们,每行之间有一个分页符。去年,我通过将整个文件复制到我的桌面,将其转换为 excel,并使用宏以正确的格式转换为另一个 sheet 来完成此操作。我自己并没有编写宏(只是为每一列编辑了循环),但今年我想尝试正确地做这件事,这样他们以后就可以自己做。我从来没有写过这样的代码,但我有一些编码经验,所以学习起来会很有趣。
您刚刚描述了邮件合并。 https://www.google.com/search?q=google+spreadsheet+mailmerge
Pinoyyid 是对的,您已经描述了基本的邮件合并,并且有很多选项可以完成您的要求。
但是,这也是一种需要工具箱中应该有的工具的任务!将标记数据行转置为 Things 是处理 Google Sheets 时的常见操作,因此这个基本功能可以构成许多更大事物的基础。
var docId = '--document id--';
/*
* Replace content of a document with the current data in spreadsheet.
* Each row of data will occupy one page in the document.
* Header row from spreadsheet will provide data labels in document.
*/
function RowsToDoc() {
// Get all sheet contents, remove header row
var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
var headers = data.splice(0, 1)[0];
// Open document and prepare to write
var doc = DocumentApp.openById(docId);
var body = doc.getBody();
body.clear();
// Loop over every row in sheet, adding pages to document
for (var row=0; row<data.length; row++) {
// Insert page break exept on first page
if (row>0)
body.appendPageBreak();
// Loop over all columns, writing "Data Label: Data"
for (col = 0; col<headers.length; col++) {
body.appendParagraph(headers[col] + ": " + data[row][col]);
}
}
}
我通过 SquareSpace 为当地的运动营制作了一个网页,注册页面将所有条目保存到云端硬盘中的 Google Spreadsheet。我想在 spreadsheet:
中从这里转换文档1. name | currentgrade | parentorguardianname
2. Joe Smith | 7 | Mike Smith
3. Jenny Lee | 5 | Janet Lee
Google 文档
Name: Joe Smith
Grade: 7
Parent: Mike Smith
<page break>
Name: Jenny Lee
Grade: 6
Parent: Janet Lee
我需要重命名文档中的 headers 以便它们可读,然后在每一行上使用它们,每行之间有一个分页符。去年,我通过将整个文件复制到我的桌面,将其转换为 excel,并使用宏以正确的格式转换为另一个 sheet 来完成此操作。我自己并没有编写宏(只是为每一列编辑了循环),但今年我想尝试正确地做这件事,这样他们以后就可以自己做。我从来没有写过这样的代码,但我有一些编码经验,所以学习起来会很有趣。
您刚刚描述了邮件合并。 https://www.google.com/search?q=google+spreadsheet+mailmerge
Pinoyyid 是对的,您已经描述了基本的邮件合并,并且有很多选项可以完成您的要求。
但是,这也是一种需要工具箱中应该有的工具的任务!将标记数据行转置为 Things 是处理 Google Sheets 时的常见操作,因此这个基本功能可以构成许多更大事物的基础。
var docId = '--document id--';
/*
* Replace content of a document with the current data in spreadsheet.
* Each row of data will occupy one page in the document.
* Header row from spreadsheet will provide data labels in document.
*/
function RowsToDoc() {
// Get all sheet contents, remove header row
var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
var headers = data.splice(0, 1)[0];
// Open document and prepare to write
var doc = DocumentApp.openById(docId);
var body = doc.getBody();
body.clear();
// Loop over every row in sheet, adding pages to document
for (var row=0; row<data.length; row++) {
// Insert page break exept on first page
if (row>0)
body.appendPageBreak();
// Loop over all columns, writing "Data Label: Data"
for (col = 0; col<headers.length; col++) {
body.appendParagraph(headers[col] + ": " + data[row][col]);
}
}
}