3

我的目标是从电子表格中复制一行,并使用标记将行数据合并到一个文档(最好是谷歌演示文稿)中,该文档保存为我可以打印的 PDF。

我已经想出了如何将选定的行复制到一个对象中,但我一生都无法弄清楚如何将该文本复制到任何类型的临时文档中。我有一个带有标记的演示模板,一切准备就绪。

这是我一直在使用的一些脚本。

function printRepairs() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var row = sheet.getActiveSelection();

  //prints a comma delim string of a single row
  var row1 = data[1]
  Logger.log("row #1: " + row1);
  var selectedRow = SpreadsheetApp.getActiveRange().getValues();

  // creates a file with selected row --doesn't work.
  Browser.msgBox("the row you selected contains: " +selectedRow);  
  DocsList.createFile('temp_row', selectedRow);
  copyblob(selectedRow);

  var folder = DocsList.getFolder('temp');
  folder.createFile('temp_row', 'hello', 'application/vnd.google-apps.document');

  doc = DocumentApp.create("sheet_test");
  DocumentApp.openById("sheet_test");
  text.insertText("sheet_test", selectedRow);

  Browser.msgBox("the row you selected contains: " +selectedRow);
  Logger.log("the row you selected contains: " + selectedRow);  
}
4

1 回答 1

1

您正在执行的操作通常称为“邮件合并”。有 Google Docs 附加组件可以为您执行此操作 - 从 Google Doc 转到“附加组件 > 获取附加组件”并搜索“合并”。

要从您自己的脚本中执行相同的操作,我建议您首先熟悉简单邮件合并教程中的材料。您将从文档模板创建新文档,而不是从电子表格中的模板构建电子邮件。

  1. 创建一个 google 文档模板,其标记与电子表格中的列标题相匹配。

    我有一个带有标记的演示模板,一切准备就绪。

    不幸的是,目前还不支持演示文稿。明星问题 1573:Google Apps 脚本的演示服务。(也许您的投票将是最终完成的投票!)

  2. 对于电子表格中的每一行...

    1. 创建模板文档的副本。DriveApp.makeCopy(name, destination). 您应该为每个文件使用唯一的名称,但如果不这样做,您最终会在云端硬盘上获得多个具有相同名称的文件。
    2. 使用fileId新文件的 ,并将其作为文档打开。DocumentApp.openById(id)
    3. 使用类似于thisthisthis的技术,在文档中搜索您的标记,并用电子表格中的数据替换。
于 2014-10-09T20:04:45.717 回答