2012-01-20 4 views
0

내 회사의 Google 사이트를 만들고 있는데 Google Apps 스크립트를 활용하여 사이트에서 약간의 추가 작업을 수행하고 있습니다. 내가 만든 드롭 다운 메뉴에 스크립트를 연결하고 싶습니다. 그러나 스크립트를 연결하는 방법을 알 수는 없습니다. 스크립트를 Google 가젯으로 연결하는 방법과 독립형 링크로 연결하는 방법을 알고 있지만 내 드롭 다운 메뉴에서 항목을 클릭하면 스크립트를 실행하고 싶습니다.Google 사이트에서 Google Apps 스크립트를 연결하는 방법

답변

0

보안상의 이유로 Google 사이트에 자바 스크립트를 넣을 수 없습니다. 그들은 대신 Apps 스크립트를 제공하지만 브라우저가 아닌 서버에있는 고립 된 세계에서 작동하므로 매우 까다 롭고 그 방법이 있습니다.

표준 페이지의 자바 스크립트와 매우 다르기 때문에 Apps Script로 수행 할 수있는 관점에서 목표를 재고해야합니다.

Google Apps Script를 사용하면 전체 페이지에서 독립형 스크립트로 시각화하거나 사이트의 iframe에 삽입 할 수있는 사용자 인터페이스 (실험용 UI API 사용)를 구축 할 수 있습니다. 즉, 사이트와 겹치는 드롭 다운 메뉴가 없으므로 스크립트의 UI를 시각화하기 위해 정적 공간이 필요합니다.

사이트에 스크립트 명령을 "포함"하는 또 다른 기본적인 방법은 링크를 사용하는 것입니다. 자신의 매개 변수로도 스크립트를 실행하는 링크로, 명령은 실행하지만 UI는 사용하지 않습니다. 옵션이있는 메뉴를 만들 수 있으며 각 옵션은 스크립트를 실행합니다. 하지만 나는 드롭 다운 메뉴에 대해 말하는 것이 아닙니다.

에 대해 Google 애플리케이션 스크립트의 사용자 인터페이스는 "스크립트를 연결"는 무엇을 의미하는

0

확실하지, 당신은 코드 곳을해야합니까 그밖에? "링크"를 사용하면 이벤트 핸들러를 사용하여 코드를 "호출"하는 것처럼 들릴 수 있습니다. GUI ListBox Change 이벤트 또는 Button Click 이벤트에 의해 트리거 된 ServerHandler를 사용하여 함수를 호출하는 방법을 보여 드리겠습니다.

Google Apps Scrips (GAS)에는 GUI를 수행하는 세 가지 방법이 있습니다.

  • HTML Service - 일반 HTML과 마찬가지로 HTML 양식과 입력 태그를 삽입 할 수 있습니다.
  • UI Service - 자바와 비슷합니다 (레이아웃 관리자까지). 아래를 참조하십시오.
  • GUI Builder - 레이아웃을 더 잘 이해하기 위해 수동으로 먼저 수행하는 것이 좋습니다.

Google 사이트 도구에서 대부분의 HTML을 스크립트없이 직접 추가 할 수 있습니다. UI 서비스 및 GUI 작성기는 HTML 양식 태그를 생성하며 일부 코드를 실행하지 않는 한 GUI 요소를 삽입 할 이유가 거의 없기 때문에 이러한 코드를 사용하여 시작하려고합니다., 지금까지 문제 해결 등

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; 
} 

: 일부 변경


Here is a Drop-Down list example은 핸들러 함수가 매개 변수를 사용하여 여러 UI 요소에서 호출 (그들은 때로는 위젯을 호출하는) 방법 할 수있는 방법을 보여 app.add()를 사용하여 각 요소를 추가하고 app을 return하는 것을 잊지 마십시오. doGet과 각 핸들러 함수의 끝에.

처리기는 JavaScript onClick() 또는 onChange()와 같은 기능을 실행하며, 대부분의 UI는 핸들러 없이는 유용하지 않습니다. ClientHandler는 더 효율적이지만 ServerHandler는 더 많은 작업을 수행하고 ServerHandlers로 시작하며 성능 향상을 위해 모든 간단한 함수를 ClientHandlers로 변환 할 수 있습니다. 핸들러의 공간을 줄이거 나 코드 라인 하나에 넣을 수 있습니다. 하나 이상의 GUI 개체에 사용할 계획이라면 변수에 할당 할 수 있습니다. 보다 멋진 애플리케이션을 만들기 위해 다른 레이아웃 관리자를 찾거나 GUI 빌더를 사용하는 것이 좋습니다. 또한 app.createServerClickHandler()와 같은 다른 함수를 작성하는 데 사용합니다. 그러나 쓸모가 없어졌으며 지금은 더 이상 사용되지 않는 다른 참조를 무시하므로 addChangeHandler() 및 addClickHandler()를 GUI 요소에 계속 사용합니다. 그들 자신.

setName()은 어리석은 것처럼 보입니다. 매개 변수 이름을 설정하기 만하면됩니다. (나는 그것들이 바뀌 길 바란다) 그래서 지금은 요소 id와 똑같이 설정하는 것이 좋습니다. Handler의 변수 이름 = id = 이벤트 함수 이름을 모두 관련성을 설명하기 위해 만들었습니다.

관련 문제