2013-05-28 35 views
1

我開發了一個腳本擴展,它使用Google文檔作爲模板AND作爲腳本持有者有沒有辦法從文檔中刪除腳本(使用新的文檔嵌入腳本)

它給了我一個非常好的環境來實現郵件合併應用程序(見下文)。 在某些時候,我使用DocsListmakeCopy(new Name)來生成所有將被修改和發送的文檔。它去只是這樣的:

var docId=docById.makeCopy('doc_'+Utilities.formatString("%03d",d)).getId(); 

一切工作相當不錯,但(當然)的模板文檔的每個副本包含這顯然是沒有必要的腳本的副本!這也是一個有點討厭,因爲每一個我打開一個副本的時間來檢查,如果數據是正確的,我得到自動打開其中一個耗時的過程工具欄菜單...

我的問題是(有):

  • 有什麼辦法從副本中刪除嵌入的腳本? (這很簡單)
  • 或者我應該將模板中的所有文檔元素都複製到空白文檔中? (這也是一種可行的方法,但我沒有嘗試,我不知道這個文檔在現實生活中會用到什麼...... 我應該在任何情況下都得到一個完美的克隆嗎?) 我已經閱讀文檔,並沒有發現任何相關的線索,但誰知道?也許我錯過了一些明顯的;-)
下面

是縮小畫面捕捉,顯示這個問題的背景:

enter image description here

+0

什麼?沒有代碼!?來吧,塞爾,你滑倒了!我嘗試了各種各樣的'.getAs()','.getBlob()'並設置MIME類型來讓'DocsList.createFile()'工作。到目前爲止,我可以得到一個不會打開的gdoc,或者一個pdf,或者「無效的MIME類型」例外。訪問[問題585](https://code.google.com/p/google-apps-script-issues/issues/detail?id=585)並加以明星 - 也許我們將有能力擁有'getAs( )'返回比PDF更多的東西。 – Mogsdad

+1

作爲解決方法,您可以「檢測」文件上沒有佔位符,並且不顯示側窗格。 –

+0

@Henrique:這是一個很好的建議:-) @ Mogsdad:從一個空文檔開始可以通過在空文檔上使用makeCopy來實現,但在此之後,我仍然應該遍歷整個文檔,通過識別他們的類型......我猜不是很有效率。順便說一句:我可以沒有代碼的生活!是的,我是肯定的,我可以! (至少我有時嘗試:-) –

回答

1

繼恩裏克的建議我用一種變通方法,以防止用戶界面加載在新創建的文檔......(感謝恩裏克,這是聰明;-)

由的OnOpen調用的函數現在去這樣的:

function showFields() { 
    var doc = DocumentApp.getActiveDocument(); 
    var body = doc.getBody(); 
    var find = body.findText('#'); // the new docs have no field markers anymore. 
    if(find != null){ // show the UI only if markers are present in the document. 
    var html = HtmlService.createHtmlOutputFromFile('index') 
     .setTitle("Outils de l'option Publipostage").setWidth(370); 
    ui.showSidebar(html); 
    } 
} 
相關問題