将选定的行复制到演示文稿

时间:2013-04-01 12:56:25

标签: google-apps-script google-sheets

我的目标是从电子表格中复制一行,然后使用标记将行数据合并到一个文档(理想情况下是一个Google演示文稿)中,该文档另存为我可以打印的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);  
}

1 个答案:

答案 0 :(得分:1)

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

要从您自己的脚本执行相同的操作,我建议您首先熟悉Simple Mail Merge tutorial中的材料。您无需通过电子表格中的模板构建电子邮件,而是从文档模板创建新文档。

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

      

    我有一个带有标记的演示文稿模板。

    不幸的是,目前还没有对演示文稿的支持。明星Issue 1573: Presentation Service for Google Apps Script。 (也许你的投票将是最终完成它的投票!)

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

    1. 创建模板文档的副本。 DriveApp.makeCopy(name, destination)。您应该为每个文件使用唯一的名称,但如果不这样做,您最终将在驱动器上以多个具有相同名称的文件结束。
    2. 使用新文件的fileId,并将其作为文档打开。 DocumentApp.openById(id)
    3. 使用类似于thisthisthis的技术,在文档中搜索您的标记,并替换为电子表格中的数据。