【问题标题】:Generate Doc pages from rows of spreadsheet data从电子表格数据行生成文档页面
【发布时间】:2015-12-02 19:55:23
【问题描述】:

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

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

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

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

  • 除了为每一行创建一个新文档外,怎么做?
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    相关资源
    最近更新 更多