Google Apps Scriptにて、
scriptで配列を作成し、html(ウェブアプリケーションとして導入)にて
プルダウンとして表示させたいです。
そもそもonclickではないのだろうなと気付いておりますが、
どう反映させればいいのか…無知で恐縮ですが、お助け願います。
仮.gas
※メモ※昨日papinianus様にご教示いただいた内容は未反映です
function set_availability(sheet, column, id){ //時間の記載されているSS var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var availability_spreadsheet = spreadsheet.getSheetByName('SS'); var calendar_id = "アドレス1"; var calendar_id2 = "アドレス2"; var last_row = availability_spreadsheet.getLastRow() var calendar_info = CalendarApp.getCalendarById(calendar_id); var calendar_info2 = CalendarApp.getCalendarById(calendar_id2); //ステータス列の判定 var array_data=[]; var array_data1=[]; var array_data2=[]; for(var i = 3; i <= last_row; i++){ //SS3行目から30分ごとに時間が記載されています var start_date_base = availability_spreadsheet.getRange(i, 1).getValue(); var start_date_tmp = new Date(start_date_base); var end_date_tmp = start_date_tmp.setMinutes(start_date_tmp.getMinutes()+30); var start_date = new Date(start_date_base); var end_date = new Date(end_date_tmp); var myEvents= calendar_info.getEvents(start_date, end_date); var myEvents2= calendar_info2.getEvents(start_date, end_date); //予定がなかったら格納 if (myEvents.length == 0){ var start_date_in = Utilities.formatDate(start_date , "Asia/Tokyo", "yyyy/MM/dd HH:mm"); array_data.push(start_date_in); } //予定がなかったら格納 if (myEvents2.length == 0){ var start_date_in = Utilities.formatDate(start_date , "Asia/Tokyo", "yyyy/MM/dd HH:mm"); array_data.push(start_date_in); } } var _ =Underscore.load(); var array_data = _.intersection(array_data1,array_data2); Logger.log(array_data); return array_data; //array_dataの中身は [2018/10/27 09:00, 2018/10/27 09:30, 2018/10/27 10:00~]のような日付の文字列を想定 };
仮.html
<!DOCTYPE html> <html> <head> <div class="select_style"> <select id= "start_time" name="start_time" onclick="createSelectBox()" required> </select> </div> </head> </html> function createSelectBox(){ google.script.run.withSuccessHandler( function(array_data) { for(var i=0;i<array_data.length;i++){ let op = document.createElement("option"); op.value = array_data[i].val; //value値 op.text = array_data[i].txt; //テキスト値 document.getElementById("start_time").appendChild(op); } }).set_availability(); }; };
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/15 13:45
2018/10/15 23:58
2018/10/16 00:18
2018/10/16 01:37
2018/10/16 02:11
2018/10/16 02:39
2018/10/16 04:32
2018/10/16 07:30 編集
2018/10/16 08:01
2018/10/17 06:58
2018/10/17 07:59 編集
2018/10/17 12:11 編集
2018/10/18 02:13
2018/10/18 03:02
2018/10/23 08:38
2018/11/06 03:22 編集