2012-05-30 36 views
4

我想創建一個腳本,將採取谷歌文檔模板文件,進行復制,從一排我的電子表格替換信息的某些文字,附加另一頁上替換文本,從下一行替換信息的文本在電子表格上,追加另一頁等複製文檔的頁面,每個頁面

這是我到目前爲止有:

// Global variables 
var templateDocID = ScriptProperties.getProperty("backRxRequestDocID"); 
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
var activeSheetName = sheet.getName(); 
var user = Session.getUser().getEmail(); 

function requestGen3() { 
    var physName = ["doc john", "doc evan", "doc jane"]; 
    var physAddr1 = ["fake st.", "faker st.", "fakest st."]; 
    var physAddr2 = ["ste 100", "", "ste 209"]; 
      var physCity = ["SLC", "Provo", "Orem"]; 
    var physState = ["UT", "AZ", "NV"]; 
    var physZip = ["84049", "84044", "84601"]; 
      var physPhone = ["8015555555", "7206666666", "4803333333"]; 
    var ptName = ["ed", "sue", "izzy"]; 
    var ptDOB = ["12/10/1979", "1/1/2001", "45/94/4561"]; 
    // Get document template, copy it as a new temp doc, and save the Doc’s id 
    var docID = DocsList.getFileById(templateDocID).makeCopy().getId(); 
    var doc = DocumentApp.openById(docID); 
    var body = doc.getActiveSection(); 
    var pars = doc.getParagraphs(); 
    var bodyCopy = body; 
    for (var i = 0; i < physName.length; ++i) { 
    // Replace place holder keys, 
    body.replaceText('%PHYS_NAME%', physName[i]); 
    body.replaceText('%PHYS_ADDR1%', physAddr1[i]); 
    body.replaceText('%PHYS_ADDR2%', physAddr2[i]); 
    body.replaceText('%PHYS_CITY%', physCity[i]); 
    body.replaceText('%PHYS_STATE%', physState[i]); 
    body.replaceText('%PHYS_ZIP%', physZip[i]); 
    body.replaceText('%PHYS_PHONE%', physPhone[i]); 
    body.replaceText('%PT_NAME%', ptName[i]); 
    body.replaceText('%PT_DOB%', ptDOB[i]);  
    doc.appendPageBreak(); 
    for (var j = 0; j < pars.length; ++j) { 
     doc.appendParagraph(pars[j].copy()); 
    } 
    } 

    // Save and close the document 
    doc.saveAndClose(); 
} 

我通過教程接着從表格中讀取,但我似乎無法使getRowsData()getObjects()正常工作。我上面的腳本正確地創建文檔,但沒有插入第二組信息到第二頁和第三組進入第三頁,等等

回答

2

你要代替你複製的段落後,才文,因爲如果你在做之後,佔位符將被替換,並且不會出現在下一個副本中。您可以這樣做:

//... 
var pars = doc.getParagraphs(); 
for(var i in pars) //loop to keep a copy of the original paragraphs 
    pars[i] = pars[i].copy(); 

for(var i = 0; i < physName.length; ++i) { 
    body.replaceText('%PHYS_NAME%', physName[i]); 
    //do all your replaces... 
    if(i != physName.length-1) { //has next? 
    doc.appendPageBreak(); 
    for(var j in pars) 
     doc.appendParagraph(pars[j].copy()); 
    } 
} 
doc.saveAndClose(); 
+0

謝謝。這非常適合添加頁面,很簡單,但我是新手。關於讓getRowsData()函數讀取我的電子表格的行以代替我手動輸入的數組來替換文檔的文本的任何提示。再次,任何幫助非常感謝。 –

0

以下代碼將讀取您的電子表格並創建一個名爲data的矩陣。

var sh = SpreadsheetApp.getActive().getActiveSheet(); 
var lastRow = sh.getLastRow(); 
var lastCol = sh.getLastColumn(); 
var data = sh.getRange(1, 1, lastRow, lastCol).getValues(); 
+0

其實你不需要得到最後一行和一列。只需做一個:var data = SpreadsheetApp.getActiveSheet()。getDataRange()。getValues()' –