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

时间:2015-12-02 19:55:24

标签: google-apps-script google-sheets google-drive-api

我通过SquareSpace为当地体育营创建了一个网页,注册页面将所有条目保存到云端硬盘中的Google电子表格中。我想在电子表格中转换文档:

1. name      | currentgrade | parentorguardianname
2. Joe Smith |            7 | Mike Smith
3. Jenny Lee |            5 | Janet Lee

在Google Doc

中使用此功能
Name: Joe Smith
Grade: 7
Parent: Mike Smith

<page break>

Name: Jenny Lee
Grade: 6
Parent: Janet Lee

我需要重命名文档中的标题,以便它们可读,然后在每一行上使用它们,并在每一行之间分页。我在去年通过将整个文件复制到我的桌面,将其转换为excel,并使用宏转换为正确格式的另一个工作表来实现了这一目标。我自己没有编写宏(只编辑了每一列的循环),但是今年我想尝试这样做,这样他们就可以自己动手了。我从来没有写过这样的代码,但我有一些编码经验,所以学习起来很有趣。

2 个答案:

答案 0 :(得分:1)

Pinoyyid是对的,你已经描述了一个基本的邮件合并,并且有很多选项可以完成你的要求。

但是,这也是一种需要工具箱中应有工具的任务!在处理Google表格时,将标记数据行转换为 Things 是一种常见的操作,因此这个基本功能可以构成许多更大事物的基础。

spreadsheet

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

答案 1 :(得分:0)