2013-04-01 119 views
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); 
} 

回答

1

您正在執行的操作通常稱爲「郵件合併」。有Google Docs加載項可以爲你做到這一點 - 從Google Doc轉到「加載項>獲取加載項」並搜索「合併」。

從自己的腳本做同樣的,我建議你先熟悉在Simple Mail Merge tutorial材料。您不必從電子表格中的模板構建電子郵件,而是從文檔模板創建一個新文檔。

  1. 創建一個Google文檔模板,其標記與電子表格中列標題相匹配。

    我有標記的演示模板都準備好了。

    遺憾的是,用於演示(還)不支持。明星Issue 1573: Presentation Service for Google Apps Script。 (也許你的投票將是最終得到它做了一個!)

  2. 對於電子表格中的每一行...

    1. 創建模板文檔的副本。 DriveApp.makeCopy(name, destination)。您應該爲每個文件使用一個唯一的名稱,但是如果您不這樣做,則只會在Drive上結束具有相同名稱的多個文件。
    2. 使用新文件的fileId,並將其作爲文檔打開。 DocumentApp.openById(id)
    3. 使用類似於this,thisthis的技術,在文檔中搜索標記,並用電子表格中的數據替換。