LANG SELRCT

コードを書く場所についてはこちら

2018年3月27日火曜日

複数のオブジェクトをObject.assignでマージする


このようなオブジェクトがあって
  var obj1 = {en: "english", ja: "japanese"};
  var obj2 = {fr: "french", it: "italian"};
  var obj3 = {ko: "korean", de: "deutschland"};


このようにひとつにまとめたい
{"en":"english","ja":"japanese","fr":"french","it":"italian","ko":"korean","de":
"deutschland"}


.gsファイル内ではエラーが出て使えませんが、HTML ServiceのJavaScriptでは使えたため備忘録として


.gsファイル内で使うときに出るエラー
TypeError: オブジェクト function Object() { [native code for Object.Object, arity=1] } で関数 assign が見つかりません。



コード.gs
function doGet() {
  return HtmlService.createHtmlOutputFromFile("index");
}
意訳
この機能がやること
指定したHTMLファイルを表示する




index.html
<!DOCTYPE html>
<html>
<body>
  <script>
    obj_assign();
    function obj_assign() {
      var obj1 = {
        en: "english",
        ja: "japanese"
      };
      var obj2 = {
        fr: "french",
        it: "italian"
      };
      var obj3 = {
        ko: "korean",
        de: "deutschland"
      };
      var obj = Object.assign(obj1, obj2, obj3);
      alert([JSON.stringify(obj), JSON.stringify(obj1), JSON.stringify(obj2), JSON.stringify(obj3)]);
    }
  </script>
</body>
</html>
意訳
  



obj_assign()を実行する
この機能がやること
1つめのオブジェクト



2つめのオブジェクト



3つめのオブジェクト



obj1にobj2とobj3をマージして
obj, obj1, obj2, obj3の中身をアラートに出す