LANG SELRCT

コードを書く場所

2018年12月11日火曜日

Webアプリにparameterを渡してWebアプリ内のデータを返したい(CSVファイルで返す)


タイトルの件を実現する仕組みを作ってみます

詳しい実行方法はContent ServiceでCSVを返すに書きました



コード.gs
/************************************
https://script.google.com/macros/s/SCRIPT ID/exec?key=temparature_array
でtemparature_arrayの中身がcsvで返ってくる
************************************/
function doGet(e) {
  var param = e.parameter;
  var keys = Object.keys(param);
  if(keys.length) {//paramにkeyが存在していたら要求されたデータをCSVにして返す
    var data = getParamData(param);
    var out = ContentService.createTextOutput(data).setMimeType(ContentService.MimeType.CSV);
    return out;
  } else {//paramにkeyが存在していなかったらindex.htmlを開く
    return HtmlService.createHtmlOutputFromFile('index');
  }
}

/************************************
要求されたデータをCSVにして返す
************************************/
function getParamData(param) {
  var objKey = param['key'];//paramのkeyの値がreturnObjのkeyなので取得して
  var array = returnObj[objKey];//対象のreturnObjのarrayを取得して
  var csv = createCSV(array);//csvにして
  return csv;//返す
}

/************************************
配列からcsvを作って返す
************************************/
function createCSV(array) {
  var csv = '';
  for(var i = 0; i < array.length; i++) {
    csv += array[i] + ',\n';
  }
  return csv;
}

/************************************
返す配列を用意しておく
************************************/
var weather_array = [
  "はれ",
  "あめ",
  "くもり",
  "ゆき"
];

var temparature_array = [
  "あつい",
  "さむい",
  "ちょうどいい"
];

/************************************
e.parameterのkeyの値に応じて配列を返すためのオブジェクト
************************************/
var returnObj = {
  "weather_array": weather_array,
  "temparature_array": temparature_array
}



index.html
<!DOCTYPE html>
<html>
  <body>
    <textarea></textarea>
  </body>
</html>



Webアプリとして導入して作られるURLに
以下のように?key=temparature_arrayのパラメータを付けて
https://script.google.com/macros/s/SCRIPT ID/exec?key=temparature_array
開くと
temparature_arrayの中身がCSVで取得できます

※上記のURLには有効なSCRIPT IDが入っていないので機能しません


関連記事