2012-05-16 2 views
0

에 값을 전달하지. 사이트 스크립트의 모든 것.GUI 내가 흐름 패널 (<code>mainPanel</code>), 텍스트 상자 (<code>textValue</code>)와 버튼 (<code>getETA</code>)와 GUI (<code>MyGui</code>)를 만든 스프레드 시트

아이디어는 텍스트 상자에 값을 입력하고 단추를 클릭 한 다음 값을 스프레드 시트의 A1 셀에 배치하는 것입니다.

GUI에 처리기가 구성되어 있지 않으며 스크립트를 새로운 사이트에 붙여 넣었습니다. 성공하지 못했습니다.

내가 갖고있는 문제는 스프레드 시트 셀에있는 모든 것이 "정의되지 않음"이라는 것입니다. 나는 다음과 같은 오류 메시지가 얻을 clickGetETA 기능에 대한 디버그 실행 또한 경우 :이 새로운 해요하지만 내 추측은 GUI의 세부 사항이 있다는 것입니다 "정의되지 않은에서"

을 매개 변수 "속성을 읽을 수 없습니다"를 clickGetETA 함수에 전달되지 않습니다. 할 수있는 것을 검색했지만 해결 방법을 찾지 못하는 것 같습니다 ...

누군가 내가 잘못 가고 있다고 말할 수 있다면 도움을 주시면 고맙겠습니다.

function doGet() { 
    var app= UiApp.createApplication(); 
    app.add(app.loadComponent("MyGui")); 
    var clickHandler = app.createServerHandler('clickGetETA'); 
    clickHandler.addCallbackElement(app.getElementById('mainPanel')); 
    app.getElementById('getETA').addClickHandler(clickHandler); 
    return app; 
} 

function clickGetETA(e) { 
    var sheet = SpreadsheetApp.openById('abcdefghjklmnopqrstuvwxyz'); 
    var ss = sheet.getActiveSheet(); 
    var target = ss.setActiveCell("A1"); 
    target.setValue(e.parameter.textValue); 
} 

답변

0

에 사용되는 콜백 요소는 단일 위젯이나 GUI의 패널이 될 수 있습니다. 패널을 전달할 때 패널 계층의 모든 위젯이 매개 변수에 포함됩니다. 텍스트 상자가 추가중인 패널 안에 있는지 확인 하시겠습니까?

위젯의 값은 위젯 name (GUI 빌더에서 설정해야 함)을 사용하여 핸들러 함수에서 액세스 할 수 있습니다. nameid의 차이, getElementById을 사용하여 위젯을 가져 오는 데 사용하는 ID와 여러 위젯에 대해 동일한 핸들러를 사용할 때 이벤트의 위젯 source을 결정하는 데 유의하십시오. 그리고 값에 액세스하기위한 name. 텍스트 상자의 이름을 textValue으로 지정 하시겠습니까?

+0

나는 그것을 작동시킬 수 있었다! Thx :-) 나는 그것이 정확히 작동하기 위해 무엇이 바뀌 었는지는 모르겠다.하지만 나는 신분증과 갈기를 가지고 노는 중이 었어. 정말 고마워. – user1399702

2

변경 :

var ss = sheet.getActiveSheet(); 
var target = ss.setActiveCell("A1"); 

사람 : 이런 종류의 일에 대한

var ss = sheet.getSheetByName("SheetName"); 
var target = ss.getRange("A1"); 

좋은 예는 여기에 있습니다 : 그것은 서비스로 실행해야합니다 https://developers.google.com/apps-script/guide_user_interfaces

. 즉 get 함수를 사용합니다.

참고 : 디버깅 할 때 "e"매개 변수가 존재하지 않습니다. 디버깅은 약간 제한되어 있습니다. ActiveSheet 및 ActiveCell은 서비스가 아닌 스프레드 시트에서 사용하도록 설계되었습니다. 서비스가 팝업 상자가 아닌 웹 페이지를 만듭니다.

에디.

+0

안녕하십니까, 의견에 감사드립니다.나는 당신이 제안한 변화를 만들었고, 나는 여전히 같은 생각을하고있다. 스프레드 시트에 전달 된 값은 "정의되지 않음"입니다. 네, 저는 서비스로 운영하고 있습니다. – user1399702

0

나를 위해 해결 된 것은 UI 편집기에 들어가서 양식 필드 및 이름이 인 ID를 할당했는지 확인하는 것이 었습니다. 내 e.parameter.fieldName이 정의되지 않았으므로 이름이 누락되었습니다.