2012-09-16 1 views
0

this question에 대한 답변으로 Flex 테이블을 사용하여 각 행에 대해 (GUI를 통해 작성된) 데이터를 수집하는 간단한 양식을 표시하는 데 도움이되는 방향으로 지적했습니다. 내 표 (Google 사이트 도구에 표시됨)에 표시됩니다.Google 사이트의 GAS를 사용하여 Flex 테이블의 GUI 양식 구성 요소를로드하는 올바른 구문

그러나 구문에 약간의 문제가있는 것으로 보입니다. 특히, 테이블의 나머지 부분을 제대로 렌더링 할 수는 있지만 GUI 작성 양식을 가져 와서 성공적으로 렌더링 할 수는 없습니다.

function doGet(){ 
    var app  = UiApp.createApplication(); 
    var tab  = app.createFlexTable(); 
    app.add(tab 
       .insertRow(0).insertRow(0).insertRow(0) 
       .insertCell(0, 0).setText (0, 0, "data01") 
       .insertCell(0, 1).setText (0, 1, "data02") 
       .insertCell(0, 2).setWidget(0, 2, app.loadComponent("myGui")) 
       .insertCell(1, 0) 
       .insertCell(1, 1) 
       .insertCell(2, 0) 
       .setBorderWidth(5).setCellPadding(10).setCellSpacing(10)); 
    return app; 
} 

모든 도움을 주실 수 있습니다.

+0

접두사를 설정하지 않고 UiInstance에서 동일한 GUI 작성기 구성 요소를 여러 번 사용하지 마십시오! 중복 된 ID로 이어지고 UI가로드되지 않습니다. GUI 빌더 구성 요소가 작 으면 더 많은 제어, 안정성 및 단순성을 위해 GUI 빌더없이 수행하십시오. – Taras

+0

도움이되는 Taras에 감사드립니다. – Mowzer

답변

1

.insertCell()에는 반환 값으로 flextable이 있습니다. 따라서 연속적인 .setText() 메서드가 올바르지 않습니다. FlexTable을 사용하면 setWidget 메서드를 두 번 사용할 수 있습니다. 별도의 .insertRow 또는 .insertCell 메서드 호출이 필요 없습니다. FlexTable에는 각 행에 다른 수의 셀을 포함 할 수있는 기능이 있지만 (제공 한 스 니펫으로)이 경우에는 필요가 없습니다.

예제 행은 1 행 5 열입니다.

tab.setWidget(0, 0, <Widgets or plain text>); 
tab.setWidget(0, 1, <Widgets or plain text>); 
tab.setWidget(0, 2, <Widgets or plain text>); 
tab.setWidget(0, 3, <Widgets or plain text>); 
tab.setWidget(0, 4, <Widgets or plain text>); 

이 링크는 FlexTable의 모든 사용 가능한 속성을 보여줍니다. https://developers.google.com/apps-script/class_flextable

예제 코드의 코드는 Google에서 구했습니까? Google'ing : ''Google 애플리케이션 스크립트 'FlexTable'을 사용해보고 다른 개발자의 사례를 살펴보십시오. 그것은 이상하게 들리지만 구글 (내 의견으로는)에서 것보다는 (많은) 더 나은보기가 있고 당신에게 당신의 목표를 도달 할 수있는 다른 방법에있는 약간 통찰력을 줄 것이다.

마지막으로 하나의 팁. 코드의 가독성은 매우 중요합니다. 특히 코드를 작성할 때 특히주의해야합니다. .insertRow 및 .insertCell 메서드 호출을 사용하려면 .insertRow (0) .insertCell (0, 0) ...과 같이 순서대로 사용하려고합니다. 그래서 각 행을 연속적으로 구성하면 수행되는 작업이 분명해집니다. 각각의 분리 된 행.

희망이 도움이됩니다.

+0

몇 가지 간단한 조언 : .setWidget 또는 .setText로 셀을 채우면 .insertRow 및 .insertCell이 중복됩니다. 빈 셀만 삽입해야합니다. ** 그러나 ** .setText (행, 열, 문자열)이 문맥에서 올바른지 - 메서드는 .setWidget (행, 열, 위젯)처럼 flextable을 반환합니다. – Taras

+0

네 말이 맞아. .setText()에 대한 나쁜 것은 표준 메서드 인 .setText ("")를 염두에두고 있습니다. Greets ;-) –

+0

이 모든 정보는 매우 유용합니다. 고맙습니다. – Mowzer