2012-11-16 69 views
1

誠聘以下指導意見:合併表單提交文件 - 丟失新手

用戶提交Formstack形式 - > form項填充在谷歌電子表格的行 - >觸發文件的執行合併爲提交(現在是表格中的ROW),列標題定義了變量 - >通過提交的電子郵件地址將合併文檔電子郵件發送給用戶。

我的文檔需要能夠有條件地處理許多變量(如果/然後基於表單響應的條件文本)。我已經玩過一個名爲Ultradoc的應用程序,它似乎對於Google文檔中的變量處理非常有用,支持條件等。

但是,問題是它不知道如何選擇一行數據,而是旨在爲每列中的所有內容運行合併。

一個想法可能是運行一個腳本,它採用新的ROW,並以某種方式使它看起來像一個兩行工作表(標題+提交的行)?以某種方式隱藏其他行?這似乎非常糟糕。什麼是正確的方式來處理這樣的事情?

在此先感謝

+0

[你嘗試過什麼?](http://mattgemmell.com/2008/12/08/what-have-you-tried/)PLE ase發佈一些代碼。 – durron597

回答

2

你其實並不需要這方面的任何第三方應用程序。 將表單創建爲Google表單,創建腳本並使其在表單提交中運行。

要獲得被輸入到表單這些值,通過表單提交作爲參數傳遞給該函數:function processForm(e){

要在形式獲取數據,訪問e.values陣列。它是零索引,從表單上的首要項目開始。

商店提交的數據到變量

var name = e.values[0]; 
var email = e.values[1]; 
// and so on... 

執行任何驗證或文檔處理。

創建模板文件

var copyId = DocsList.getFileById("templateDocID") 
      .makeCopy(docName+' from '+name) //or whatever you wanted to call the resulting document 
      .getId(); 
var copyDoc = DocumentApp.openById(copyId); 
var copyBody = copyDoc.getActiveSection(); 

的副本在模板

copyBody.replaceText("NAME", name); 
copyBody.replaceText("EMAIL", email); 
// and so on... 

替換文本文檔發送到用戶(我的應用程序,我發送爲PDF格式,但你可以發送你喜歡怎麼過)

copyDoc.saveAndClose(); 
var pdf = DocsList.getFileById(copyId).getAs("application/pdf"); 
MailApp.sendEmail(email, copyDoc.getName(), "Here's your document", {attachments:pdf}); 
DocsList.getFileById(copyId).setTrashed(true);