2016-12-14 5 views
0

Google Apps Script를 배우려고합니다. 같은 프로젝트에 두 개의 .gs 파일 ""두 개를 만들면서 약간의 실험을했습니다. onOpen() 함수.여러 개의 .gs 파일에 여러 개의 onOpen() 함수가 있습니다.

문서를 저장하고 닫은 다음 onOpen() 함수 중 하나만 실행했습니다 (Sidebar.gs 파일).

동일한 파일에 포함시킬 필요가 있습니까? 글쎄, 나는 그것이 주변의 일이라는 것을 알고 있다고 생각한다. 제 질문은 입니다. 왜 그런가요?

Project: 

Code.gs: 
    function onOpen() { 
    DocumentApp.getUi().createMenu("PACKT").addItem("Greeting","greeting").addToUi(); 
    } 

    function greeting() { 
    var ui = DocumentApp.getUi(); 
    ui.alert("Greeting", "Hello World!", ui.ButtonSet.OK); 
    } 

Sidebar.js: 

    function onOpen() { 
    var htmlOutput = HtmlService.createHtmlOutput('<button onclick="alert(\'Hello World!\');">Click Me</button>').setTitle("My Sidebar"); 
    DocumentApp.getUi().showSidebar(htmlOutput); 
    } 

고마워요!

답변

2

에는 결코 동일한 네임 스페이스에서 같은 이름을 가진 두 개의 함수가 있어야합니다. functionName() 전화가 걸릴 때 실행해야하는 것은 무엇입니까? (실제로 마지막으로 정의 된 함수는 생존하는 함수이고, 나머지는 추적없이 손실됩니다.)

특히, 같은 프로젝트 내에 두 개의 onOpen 함수를 하나의 파일이나 별도로 두어서는 안됩니다 (파일은 네임 스페이스를 공유합니다. 즉, 한 파일의 함수를 다른 파일에서 호출 할 수 있음을 의미합니다). 같은 파일).

그러나 단순히 실행하는 데 필요한 어떤 함수를 호출 할 수 있습니다 하나으로 onOpen() 함수 :

function onOpen() { 
    doThisThing(); 
    doAnotherThing(); 
} 
+0

쿨. 설명 해줘서 고마워. 그래, 나는 둘 다 물건을 하나에 넣었고, 둘 다 일했다. 나는 왜 너가 둘 다 할 수 없는지 알고 싶었다. 그것은 제가 계획 한 일이 아니며 나중에 프로젝트에 많은 파일과 기능이 포함되어있는 경우를 대비해 실험하기 만하면됩니다. 다시 고마워! – AmericanMade

+0

또한 원하는만큼 많은 .gs 파일을 가질 수 있지만 Google Apps Script가 작동하는 방식은 모두 하나의 파일에있는 것처럼 정확하게 동일하다는 점을 지적하고자합니다. 별도의'.gs' 파일은 코드를보다 쉽게 ​​탐색 할 수있는 단일 목적을 제공합니다. 설치 가능한'onOpen' 트리거를 여러 함수에 사용할 수도 있지만, 어느 것이 먼저 실행되는지에 대한 제어권이 없다고 생각합니다. – Vytautas