2014-03-07 2 views
0

핸들러 함수에서 다중 선택 목록 상자를 처리하는 데 어려움을 겪고 있습니다. 내 목록 상자 항목을 쉼표가 포함 된, 이상적으로 처리기에서 선택한 항목의 배열을 가져오고 싶지만 그것은 하나의 문자열로 보인다.GAS Listbox 다중 선택 처리

아무도 내가 이것을 할 수있는 방법을 알고 있습니까?

감사

function doGet() { 
... 
var completedReportsList = app.createListBox(true) 
.setId('list') 
.addItem("Bloggs, Joe") 
.addItem("Doe, Jane"); 
var generatePDFButton = app.createButton("Generate PDFs") 
.setId("generatePDFButton"); 
var generatePDFButtonHandler = app.createServerClickHandler('generatePDF') 
.addCallbackElement(completedReportsList) 
generatePDFButton.addClickHandler(generatePDFButtonHandler); 
... 
} 

function generatePDF(e) { 
var app = UiApp.getActiveApplication(); 
Logger.log(e.parameter.list.length); // undefined 
Logger.log(e.parameter.list); // <- how to parse multiple selected items? 
return app; 
} 

답변

1

리스트 박스 2 개 파라미터에 "도시"값을 수용하고,이 값을 "반환". 두 번째 매개 변수는 선택적이며,없는 경우 반환 값은 표시된 값이됩니다.

이 두 번째 필드를 쉼표가없는 값과 함께 사용할 수 있습니까 (예 : | 구분 기호를 사용하면 각 배열 요소에서 대체하여 원래 값을 쉽게 다시 작성할 수 있습니다.

다음과 같은 코드가 될 것이다 :

(당신이 길이를 가지고 왜 당신은 또한 당신의 목록에 이름을 잊어 버렸습니다, 그건 = e.parameter.list에 대한 정의되지 않은)

function doGet() { 
    var app = UiApp.createApplication().setTitle('test'); 

    var completedReportsList = app.createListBox(true) 
    .setId('list').setName('list') 
    .addItem("Bloggs, Joe","Bloggs| Joe") 
    .addItem("Doe, Jane","Doe| Jane");// this could of course be obtained in the script with a .replace string method. 
    var generatePDFButton = app.createButton("Generate PDFs").setId("generatePDFButton"); 
    var generatePDFButtonHandler = app.createServerClickHandler('generatePDF').addCallbackElement(completedReportsList); 
    generatePDFButton.addClickHandler(generatePDFButtonHandler); 
    app.add(completedReportsList).add(generatePDFButton) 
    return app 
} 

function generatePDF(e) { 
    var app = UiApp.getActiveApplication(); 
    Logger.log(e.parameter.list.split(',').length); // undefined 
    var listValues = e.parameter.list.split(','); // an array of values 
    for(var n in listValues){ 
    Logger.log(listValues[n].replace('|',',')); 
    } 
    return app; 
} 

그리고 다음은 doGet 함수에서 대체 필드를 자동으로 생성하는 수정 된 버전입니다.

function doGet() { 
    var app = UiApp.createApplication().setTitle('test'); 
    var completedReportsList = app.createListBox(true).setId('list').setName('list'); 
    var items = ["Bloggs, Joe","Doe, Jane"]; 
    for(var n in items){ 
    item = items[n]; 
    modItem = items[n].replace(',','|'); 
    completedReportsList.addItem(item,modItem); 
    } 
    var generatePDFButton = app.createButton("Generate PDFs").setId("generatePDFButton"); 
    var generatePDFButtonHandler = app.createServerClickHandler('generatePDF').addCallbackElement(completedReportsList); 
    generatePDFButton.addClickHandler(generatePDFButtonHandler); 
    app.add(completedReportsList).add(generatePDFButton) 
    return app 
} 
+0

감사합니다. listitem의 값 매개 변수를 사용하여 abl했습니다. 그것을 해결하는 e – olilarkin

관련 문제