2013-08-12 76 views
0

我最近採用了googleapps開發人員博客的郵件合併腳本。合併Google腳本gs文件

腳本2 http://googleappsdeveloper.blogspot.hk/2011/10/4-ways-to-do-mail-merge-using-google.html

有腳本4個GS文件,其中一個是不必要的,我只是評論整個腳本,它運行完美的罰款。

然後我試圖將所有內容從「Standard.gs用戶界面」複製到「Code.gs」。 完成之後,我刪除了「Standard.gs的UI」。

該腳本然後不運行。它不能再發送郵件。

關於合併腳本時可能出錯的任何想法?

謝謝!

回答

2

如果從單獨的.gs文件中的所有代碼被忠實地複製到單個.gs文件中,沒有理由停止運行該腳本。 (儘管沒有很好的理由這樣做,實際上,在這個例子中,分開代碼是一種很好的做法)。

你知道嗎?當包含多個'文件'的腳本運行時,整個腳本被'加載'並運行。對於機器來說,多個gs文件的存在是沒有意義的 - 它們只是作者的便利。所有文件中的所有函數和全局變量都可以在每個單獨的文件中編碼。 所有函數範圍之外的語句被執行。 (。所以,如果你有類似var sheet = SpreadsheetService.getActiveSheet()在每一個頂部GS文件,它會多次執行 - 你只需要一個)

你在這一點上的選項有:

  • 確保您的數據仍然有效。也許代碼沒有問題。
  • 查看運行失敗後的執行腳本,看看是否有線索發生錯誤。至少,你會知道它停在哪裏。
  • 查看您的手動合併,與原始代碼進行比較,以確保您已正確複製代碼。如果你有第二套眼睛,甚至更好。
  • 使用調試器或記錄器仔細地通過processRow()merge() - 前者是發送電子郵件的唯一位置,後者執行主合併操作。由於觀察到的問題是郵件未發送,因此在此處開始調試是有意義的。
  • 回到正本,重新開始。

關於合併腳本時可能出錯的任何想法?

  • 錯位括號({})可以改變數據結構和功能。

  • gs允許多個函數副本,但只有底部的將執行。在這種情況下,您將不會收到任何錯誤消息,但事情可能不會像您期望的那樣行事。 (原始的YAMM2腳本沒有重複的函數名稱,但是我在庫中看到過其他腳本。)

    例如,如果您將伴隨gs文件中的函數複製到Code.gs中,然後將其註釋掉原始文件中的函數的BODIES,對這些函數中的任何一個函數的調用都會從協同文件中執行空的版本,而不是Code.gs中的副本。

  • 操作員錯誤。我們都去過那裏。