我正在爲我的公司創建一個谷歌網站,我正在利用谷歌應用程序腳本在網站上做一些額外的工作。我真的很想將腳本鏈接到我製作的下拉菜單。但是,我無法弄清楚如何鏈接腳本。我知道如何將腳本鏈接爲Google小工具和獨立鏈接,但我真的希望在我點擊下拉菜單中的項目時運行腳本。如何鏈接谷歌網站上的谷歌應用程序腳本
回答
出於安全原因,Google不允許您將JavaScript放入Google協作平臺。 他們提供的應用程序腳本,而是因爲他們在一個孤立的世界(服務器上而不是瀏覽器)工作,其非常棘手,並有其方法。
因爲它與標準頁面的JavaScript非常不同,所以您必須根據Apps腳本允許的方式重新考慮您的目標。
通過Google Apps腳本,您可以構建用戶界面(使用其實驗性UI API),該界面可以在整個頁面中作爲獨立腳本可視化,也可以在站點中的iframe中插入。這意味着您將不會有與您的網站重疊的下拉菜單:您需要一個靜態空間來可視化您的腳本的用戶界面。
還有另一種更原始的方式來在站點中「嵌入」腳本命令:使用鏈接。即使使用自己的參數也會觸發腳本的鏈接,僅用於運行de命令,但沒有任何UI。您可以製作帶有選項的菜單,每個菜單都會觸發一個腳本。但我不是在談論下拉菜單。
關於谷歌Apps腳本的用戶界面
不知道你的 「鏈接腳本」 的意思,你有代碼某處其他?通過「鏈接」,您聽起來像是在用事件處理程序「調用」代碼。我將向您展示如何使用由GUI ListBox Change事件或Button Click事件觸發的ServerHandler調用函數。
在Google Apps腳本(GAS)中,有三種方法可以執行GUI。
- HTML Service - 很像普通的HTML,您可以插入HTML表單和輸入標籤。
- UI Service - 很像java(就佈局管理器而言),請參見下文。
- GUI Builder - 我建議先手動做,以便更好地理解佈局。
在Google協作平臺中,您可以直接添加大多數HTML而無需腳本。 UI服務和GUI生成器會爲你生成HTML表單標籤,因爲很少有任何理由要插入GUI元素,除非你正在執行一些代碼,你可能想要先使用這些代碼。
Here is a Drop-Down list example一些變化來說明如何將處理函數可以從多個UI元素被調用(它們有時稱之爲窗口小部件),以及如何使用參數:
function doGet(e) { // use doGet() & UiApp to make a canvas.
var app = UiApp.createApplication();
var doEvent = app.createServerHandler('doEvent').setId('doEvent');
var myList = app.createListBox().setId('myList').setName('myList');
myList.addItem('one'); // add items, I use single quote strings.
myList.addItem('two').addItem('three') // I know it looks weird.
// Scripts let you do this, by returning self for your convenience.
.addChangeHandler(
app.createServerHandler('doEvent')
);
app.add(myList); // Add element to GUI.
doEvent.addCallbackElement(myList); // Add to Event Handler.
app.add(app.createButton('Click Me').setId('myButton')
.addClickHandler(doEvent));
return app;
} // Simple DropDown by Jason K.
function doEvent(e) { // use split() if isMultipleSelect is true
var app = UiApp.getActiveApplication();
app.add(app.createLabel(
'List Value is ' + e.parameter.myList
+ ' from ' + e.parameter.source));
return app;
}
至於故障排除,記得用app.add()添加每個元素並返回應用程序;在doGet和每個處理函數的末尾。
處理程序執行JavaScript onClick()或onChange()函數的函數,大多數UI在沒有處理程序的情況下無用。 ClientHandler效率更高,但ServerHandler做的更多,從ServerHandler開始,任何簡單的函數都可以轉換爲ClientHandler以獲得更好的性能。您可以選擇將處理程序分隔出來,或者將其全部編碼到一行代碼中,這實際上是個人喜好的問題,但是如果您計劃將它用於多個GUI對象,請將其分配給一個變量。您可能希望查看不同的佈局管理器以製作更多花哨的應用程序,或者只使用GUI Builder。還有用於其他創建功能,如app.createServerClickHandler(),但我知道這些是無用的,現在已被棄用,所以忽略任何其他引用,你會發現,但我們仍然使用addChangeHandler()和addClickHandler()GUI元素他們自己。
setName()似乎很愚蠢,只需要設置參數名稱(我希望它們改變了這一點),所以現在我建議將它設置爲與元素ID相同。我還製作了處理程序的變量名稱= id =事件函數名稱,以說明它們是如何相關的。
- 1. 谷歌網站在谷歌應用程序的外部網站?
- 2. 谷歌應用程序腳本從網站上拉文本
- 3. 使用谷歌應用腳本來管理谷歌網站
- 4. 如何從谷歌片addMarker到谷歌應用程序腳本
- 5. 谷歌腳本到谷歌網站,如何調整?
- 6. 如何解決谷歌網站解放登錄谷歌網站備份谷歌應用程序?
- 7. 綁定獨立的谷歌應用程序腳本谷歌表
- 8. 谷歌應用程序腳本填寫網站表單字段
- 9. 無法打開谷歌網站和應用程序腳本了
- 10. 谷歌網站字體谷歌網站
- 11. 谷歌應用程序腳本的Daterangepicker
- 12. 谷歌應用程序腳本公式
- 13. 谷歌應用程序腳本淡入
- 14. google.load和谷歌應用程序腳本
- 15. 谷歌應用程序腳本區域
- 16. protection.setUnprotectedRanges - 谷歌應用程序腳本
- 17. JSON在谷歌應用程序腳本
- 18. 谷歌應用程序腳本getas
- 19. 谷歌應用程序腳本,連勝
- 20. 谷歌 - 應用程序 - 腳本UTF8
- 21. 谷歌應用程序腳本find()
- 22. 谷歌應用程序腳本cell.setFormulaR1C1
- 23. 將谷歌鏈接到我的網站
- 24. 如何使用谷歌應用程序腳本打開查看谷歌表格
- 25. 谷歌Apps腳本重定向在谷歌網站小工具
- 26. 谷歌Apps腳本會話ID谷歌網站
- 27. 谷歌Apps可以在谷歌網站腳本要授權
- 28. 如何在兩個谷歌應用程序腳本之間進行溝通嵌入一個谷歌網站?
- 29. 無法連接到谷歌縱橫API從谷歌應用程序腳本
- 30. 無法連接到谷歌谷歌縱橫API在應用程序腳本