2012-01-20 22 views
0

私は自分の会社のGoogleサイトを作成しています。私はGoogle Appsスクリプトを利用してサイトを少し追加しています。私は本当に私が作ったドロップダウンメニューにスクリプトをリンクしたいと思う。しかし、私はスクリプトをリンクする方法を把握することはできません。私はスクリプトをGoogleガジェットとして、またスタンドアロンのリンクとしてリンクする方法を知っていますが、ドロップダウンメニューから項目をクリックするとスクリプトを実行したいと思っています。GoogleサイトでGoogle Appsスクリプトをリンクする方法

答えて

0

セキュリティ上の理由から、GoogleではGoogleサイトにjavascriptを置くことはできません。 代わりにAppsスクリプトを提供しますが、ブラウザではなくサーバー上の孤立した世界で動作するため、非常に扱いにくく、その方法があります。

標準ページのjavascriptとは非常に異なるため、Apps Scriptでできることを考え直す必要があります。

Google Apps Scriptを使用すると、フルスクリーンでスタンドアロンスクリプトとして表示したり、サイト内のiframeに挿入したりできるユーザーインターフェイス(まだ実験的なUI APIを使用)を構築できます。つまり、サイトと重複するドロップダウンメニューはありません。スクリプトのUIを視覚化するには、静的なスペースが必要です。

あなたのサイトにスクリプトコマンドを「埋め込む」もう一つの方法があります:リンクを使用する。スクリプトを起動するリンク。独自のパラメータを使用しても、コマンドを実行できますが、UIはありません。オプション付きのメニューを作ることができ、それぞれはスクリプトを起動します。しかし、私はドロップダウンメニューについて話しているわけではありません。

Google Appsのスクリプトのユーザーインターフェイスについて

0

ないあなたは "スクリプトをリンク" によって何を意味するか確認してください、あなたは、コードのどこかを持っていますそれ以外は? 「リンク」では、イベントハンドラを使用して、コードを「呼び出し」することができます。 GUI ListBox ChangeイベントまたはButton ClickイベントのいずれかによってトリガされるServerHandlerを使用して関数を呼び出す方法を説明します。

Google Apps Scrips(GAS)には、GUIを実行する3つの方法があります。

  • HTML Service - プレーンHTMLと同じように、HTMLフォームと入力タグを挿入できます。
  • UI Service - Java(レイアウトマネージャまで)とよく似ていますが、下記を参照してください。
  • GUI Builder - レイアウトをよりよく理解するために、手動で最初に行うことをおすすめします。

Googleサイトでは、ほとんどのHTMLをスクリプトなしで直接追加できます。 UIサービスとGUIビルダーはHTMLフォームタグを生成しますが、GUIコンポーネントを挿入する理由はほとんどありません。ハンドラ関数は、(彼らは時々ウィジェットを呼び出す)複数のUI要素から呼び出され、どのようにパラメータを使用することができる方法を示すためにいくつかの変更を


Here is a Drop-Down list example:限り、トラブルシューティングなど

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()で各要素を追加してappを返すことを忘れないでください。 doGetと各ハンドラ関数の終わりに。

ハンドラは、JavaScript onClick()やonChange()などの関数を実行しますが、ほとんどのUIはハンドラなしでは役に立ちません。 ClientHandlerはより効率的ですが、ServerHandlerはさらに多くのことを行い、ServerHandlerで始まり、より簡単なパフォーマンスのために単純な関数をClientHandlerに変換できます。あなたは、ハンドラを除外するか、コードラインの1つにまとめることができますが、実際には個人的な好みの問題ですが、複数のGUIオブジェクトに使用する場合は変数に割り当てます。異なるレイアウトマネージャを参照して、もっと見栄えの良いアプリケーションを作成したり、GUIビルダーを使用したりすることができます。また、app.createServerClickHandler()のような他の作成関数を使用していますが、これらは役に立たず、廃止されているので、他の参照は無視しますが、addChangeHandler()とaddClickHandler()自分自身。

setName()はばかげているようですが、パラメータ名を設定するだけです(私はそれらが変更されることを願っています)ので、今は要素idと同じ設定にすることをお勧めします。また、Handlerの変数名= id =イベント関数名を、それらがすべてどのように関連しているかを示すために示しました。

関連する問題