从电子表格数据行生成文档页面

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]);
    }
  }
}