スプレッドシートにあるこのようなセルのデータを
getValuesで取得して
[[name, email], [いちご, ichigo@〜.com], [りんご, ringo@〜.com], [みかん, mikan@〜.com]]
HtmlServiceでこのように読み込みたくて書いたコードです。
valueの文字列の右に、textContentの文字列も表示できた
コード.gs
function doGet(){
return HtmlService.createHtmlOutputFromFile('index');
}
function returnData() {
var values = returnValues();
var objs = createObjs(values);
return objs;
}
function returnValues() {
var ssUrl = 'SPREADSHEET_URL';
var ss = SpreadsheetApp.openByUrl(ssUrl);
var sheet = ss.getSheets()[0];
var range = sheet.getDataRange();
var values = range.getValues();
return values;
}
function createObjs(values) {
var objs = [];
for(var i = 0; i < values.length; i++) {
var name = values[i][0];
var email = values[i][1];
var obj = {};
obj['name'] = name;
obj['email'] = email;
objs.push(obj);
}
return objs;
}
|
index.html
<!DOCTYPE html>
<html>
<body>
<div id="main_div">
<input list="list1">
</div>
<script>
/************************************
elem(id)
************************************/
function elem(id) {
return document.getElementById(id);
}
getData();
/************************************
get_data()
************************************/
function getData() {
google.script.run
.withFailureHandler(onFailure)
.withSuccessHandler(onSuccess)
.returnData();
}
/************************************
onSuccess(result)
************************************/
function onSuccess(objs) {
createDatalist(objs);
}
/************************************
onSuccess(result)
************************************/
function createDatalist(objs) {
alert(JSON.stringify(objs))
var main = document.getElementById('main_div');
var datalist = document.createElement('datalist');
datalist.setAttribute("id", "list1");
for (var i = 0; i < objs.length; i++) {
var name = objs[i]['name'];
var email = objs[i]['email'];
var option = document.createElement('option');
option.setAttribute("value", name);
option.textContent = email;
datalist.appendChild(option);
}
main.appendChild(datalist);
}
/************************************
onFailure(e)
************************************/
function onFailure(e) {
alert([e.message, e.stack]);
}
</script>
</body>
</html>
|