2013-03-24 4 views
0

나는 일하기 가장 간단한 것을 얻으려고 미친 듯이 느끼고 있습니다. Google 드라이브의 Google 스프레드 시트에 메일 링리스트가 있습니다. 사용자가 전자 메일에 포함 할 메시지를 묻는 사용자 인터페이스를 만들었습니다. 내 코드는 다음과 같습니다.textarea에서 텍스트 가져 오기

function startBulkEmailUI(e) { 
    //create main form 
    var app = UiApp.createApplication().setTitle('Send Email').setWidth(602).setHeight(402); 
    var scrollPanel = app.createScrollPanel().setId('scrollPanel').setAlwaysShowScrollBars(true) ; 
    var mainPanel = app.createVerticalPanel().setId('mainPanel'); 
    mainPanel.setStyleAttribute('border', '1px solid #C0C0C0').setWidth("100%").setHeight("100%"); 
    scrollPanel.add(mainPanel); 
    //create panel for input boxes etc 
    var inputPanel =  app.createVerticalPanel().setId('inputPanel').setWidth("100%").setHeight("100%").setSpacing(0); 
    var messageLabel = app.createLabel('E-mail Message'); 
    var messageBox = app.createTextArea().setName('messageBox').setId('messageBox').setVisible(true).setWidth(400).setHeight(150); 
    var attachmentLabel = app.createLabel('E-mail Attachment'); 
    var attachmentCheckBox = app.createCheckBox('Attach a file').setValue(false); 
inputPanel.add(messageLabel).add(messageBox).add(attachmentLabel).add(attachmentCheckBox); 
    mainPanel.add(inputPanel).setCellHorizontalAlignment(inputPanel, UiApp.HorizontalAlignment.CENTER) ; 
    inputPanel.setCellHorizontalAlignment(messageLabel, UiApp.HorizontalAlignment.CENTER); 
    inputPanel.setCellHorizontalAlignment(messageBox, UiApp.HorizontalAlignment.CENTER); 
    inputPanel.setCellHorizontalAlignment(attachmentLabel, UiApp.HorizontalAlignment.CENTER); 
    inputPanel.setCellHorizontalAlignment(attachmentCheckBox, UiApp.HorizontalAlignment.CENTER); 
    //add function buttons 
    var buttonsPanel = app.createHorizontalPanel().setStyleAttribute('margin', '20px').setWidth(500); 
    var closeButton = app.createButton('Close',app.createServerHandler('close_')); 
    var sendButton = app.createButton('Send!').setId("sendButton"); 
    buttonsPanel.setId('buttonsPanel').add(closeButton).add(sendButton); 
    mainPanel.add(buttonsPanel).setCellHorizontalAlignment(buttonsPanel, UiApp.HorizontalAlignment.CENTER); 
    buttonsPanel.setCellHorizontalAlignment(closeButton, UiApp.HorizontalAlignment.CENTER).setCellHorizontalAlignment(sendButton, UiApp.HorizontalAlignment.CENTER); 
    app.add(scrollPanel); 
    //handlers 
    var handlerSendEmails = app.createServerClickHandler('sendEmails'); 
    handlerSendEmails.addCallbackElement(inputPanel); 
    sendButton.addClickHandler(handlerSendEmails); 

    //show the form 
    ss.show(app); 

    return app; 
} 

function sendEmails(e) { 
    var contactDetail = getContactDetail(); 
    var count = 0; 
    var failed = 0; 
    for (i in contactDetail) { 
    var row = contactDetail[i]; 
    var emailAddress = row[9]; 

    var stuff = e.parameter.messageBox.value; 
    Logger.log(e.parameter); 
    var message = 'Hi, ' + row[4] + '\n\n' + 'This is a test!';  // Second column 
    var subject = 'Test Email'; 
    try { 
//  MailApp.sendEmail(emailAddress, subject, message); 
     count = count+1; 
    } catch(e) { 
     failed = failed+1; 
    } 
    } 
    var msg = stuff; 
    Browser.msgBox('Debug Msg', msg, Browser.Buttons.OK); 
} 

나는 사용자가 그때 이메일 본문으로 사용할 수있는 텍스트 영역으로 정보를 입력합니다. 나는 getText가 없다는 것을 발견했다. 그래서 나는 위의 코드처럼 보일 것이라고 말하는 수백 가지의 답변을 발견했다 : 콜백 핸들러를 만든 다음 e.parameter.OBJECT_NAME.value를 사용하여 텍스트를 얻는다. 그것은 단순히 나를 위해 작동하지 않으며 내가 생각할 수있는 모든 해결 방법을 시도했다. 어떤 제안? 내 코드가 잘못 되었나요 (나는 그것이 지저분하다는 것을 알고 있습니다 ...)?

+0

질문에 DESPERATE, URGENT 등을 쓰지 마십시오. 당신의 필요가 다른 어떤 사람보다 더 큰지 어떻게 알 수 있습니까? – occulus

+0

미안하지만, 내 것이 다른 어떤 것보다 더 시급한 것은 아닙니다. 나는 그저 픽스가 인터넷을 통해 제안했기 때문에 필자는 필사적으로 (필자는이 일과 행운을 비틀어서 2 일간) 필사적으로 일한다는 것을 의미했다. 나는 일을 할 수 없다 (아마 어쩌면 어리석은 일을 할 수도 있기 때문일 것이다). 그럼에도 불구하고 나는 약간 절망적이다. – user2091307

답변

0

핸들러 함수에서 위젯의 값을 얻을 수있는 "일반적인"방법은 당신이 단순히 ".value"없이

var stuff = e.parameter.messageBox;를 사용해야 케이스 정도면 형태 e.parameter.widgetName에, 결과는 문자열입니다.

+0

당신은 나의 새로운 가장 친한 친구입니다! 그것은 꿈처럼 작동합니다. 고맙습니다! – user2091307