以下のような処理を行いたいと思っています。
(1)指定した行のスプレッドシートの値(メールアドレス、件名、本文など)を参照
(2)メールの文面作成
(3)メールの送信内容をスプレッドシート上に表示
(4)「OK」ボタン押下で、メール送信
このうち、(3)の処理を、msgBox()関数を利用すれば実現できるところまで行き着いたのですが、
メールが長文になると、msgBoxでは幅が狭くて見にくいです。
そのため、(3)の確認画面をUiappを用いて表示・ボタン押下する処理にしたいと考えています。
その際、ボタンクリック時に必要な引数を渡してメールを送信する方法が分からず躓いています(><)
恐れ入りますが、どなたかご教示頂けませんでしょうか。。。
よろしくお願い致します。
<Scriptの抜粋>
function invitationMail() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(SHEET_NAME_LIST);
var mail_type = "ご案内メール";
var selected_row = selectedRow(mail_type);
var target_datas = sheet.getRange(selected_row,1,selected_row, LIST_FORM_END).getValues();
(略)
createInvitationMail(target_lesson_date,target_lesson_course,target_name, target_mailaddress);
}
function createInvitationMail(target_lesson_date,target_lesson_course,target_name, send_mailaddress) {
(略)
doGet(send_mailaddress,target_name,subject,body);
sendMail(send_mailaddress, subject, body); ←確認画面のボタン押下時のみ、この処理を行いたい
}
function selectedRow(mail_type){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(SHEET_NAME_LIST);
var selectedRow = Browser.inputBox(mail_type + "送信",
'送信したい方の行番号を入力してください' +
' (入力例: 2):',
Browser.Buttons.OK_CANCEL);
(略)
return selectedRow;
}
function doGet(send_mailaddress,target_name,subject,body){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var app = UiApp.createApplication().setTitle("以下の内容でメールを送信しますか?")
.setHeight(500).setWidth(800);//★フォームのタイトル
var grid = app.createGrid(3,2).setWidth(800);//★行数,列数
grid.setWidget(0, 0, app.createLabel("■宛先 :"+ target_name + "様"));
grid.setWidget(1, 0, app.createLabel("■件名 :"+ subject));
grid.setWidget(2, 0, app.createLabel("■本文 :"+body));
var panel = app.createVerticalPanel();
panel.add(grid);
*ここから下が、もう意味不明に・・・・・
var button = app.createButton("メールを送信する");
// button.addClickHandler(sendMail(send_mailaddress,subject,body));
//入力フォームの値をPostMailに渡します
var handler = app.createServerClickHandler('test');
// var handler = app.createClientHandler()
// .forEventSource().setEnabled(false);
handler.addCallbackElement(grid);
var result = button.addClickHandler(handler);
panel.add(button);
app.add(panel);
ss.show(app);
return app;
}
function test(){
// var app = UiApp.getActiveApplication();
var button_clicked = "true";
app.close();
return button_clicked;
// return app;
}