LANG SELRCT

Apps Script Reference  (Create: Create new Spreadsheet | Create new Apps Script

Friday, March 20, 2020

Google Visualization APIでresponseのcolsに値が入らない場合がある


スプレッドシート側のデータや設定によって、Google Visualization APIで取得したデータの形式が異なるケースがあったので、試したパターンを書き残しておきます。

CASE1のようにすべてのセルを埋めておけば問題ないですが、空のセルがあるとresponseが変わってくるようです。



CASE1
すべてのセルが埋まっている場合は1行目がcolsに入ってきました。
(表示形式はABCを自動、Dを日付に設定)

response
 /*O_o*/
 google.visualization.Query.setResponse({
   "version": "0.6",
   "reqId": "0",
   "status": "ok",
   "sig": "705247912",
   "table": {
     "cols": [{
       "id": "A",
       "label": "midashi",
       "type": "string"
     }, {
       "id": "B",
       "label": "description",
       "type": "string"
     }, {
       "id": "C",
       "label": "tags",
       "type": "string"
     }, {
       "id": "D",
       "label": "created",
       "type": "date",
       "pattern": "yyyy/mm/dd"
     }, {
       "id": "E",
       "label": "",
       "type": "string"
     }],
     "rows": [{
       "c": [{
         "v": "見出し1"
       }, {
         "v": "説明1"
       }, {
         "v": "タグ1"
       }, {
         "v": "Date(2020,2,20)",
         "f": "2020/03/20"
       }, {
         "v": null
       }]
     }, {
       "c": [{
         "v": "見出し2"
       }, {
         "v": "説明2"
       }, {
         "v": "タグ2"
       }, {
         "v": "Date(2020,2,21)",
         "f": "2020/03/21"
       }, {
         "v": null
       }]
     }, {
       "c": [{
         "v": "見出し3"
       }, {
         "v": "説明3"
       }, {
         "v": "タグ3"
       }, {
         "v": "Date(2020,2,22)",
         "f": "2020/03/22"
       }, {
         "v": null
       }]
     }],
     "parsedNumHeaders": 0
   }
 });




CASE2
特定の列(D列)に1つだけ値が入っている場合はcolsに一行目以降の値も入ってきました。
(表示形式はABCを自動、Dを日付に設定)

response
/*O_o*/
google.visualization.Query.setResponse({
  "version": "0.6",
  "reqId": "0",
  "status": "ok",
  "sig": "131156031",
  "table": {
    "cols": [{
      "id": "A",
      "label": "midashi 見出し1 見出し2",
      "type": "string"
    }, {
      "id": "B",
      "label": "description 説明1 説明2",
      "type": "string"
    }, {
      "id": "C",
      "label": "tags タグ1 タグ2",
      "type": "string"
    }, {
      "id": "D",
      "label": "created ",
      "type": "date",
      "pattern": "yyyy/mm/dd"
    }, {
      "id": "E",
      "label": "",
      "type": "string"
    }],
    "rows": [{
      "c": [{
        "v": "見出し3"
      }, {
        "v": "説明3"
      }, {
        "v": "タグ3"
      }, {
        "v": "Date(2020,2,22)",
        "f": "2020/03/22"
      }, {
        "v": null
      }]
    }],
    "parsedNumHeaders": 0
  }
});




CASE3
データ範囲の表示形式をすべて「書式なしテキスト」にした場合はcolsに値は入らず、1行目からrowsに入ってきました。


response
 /*O_o*/
 google.visualization.Query.setResponse({
   "version": "0.6",
   "reqId": "0",
   "status": "ok",
   "sig": "703682130",
   "table": {
     "cols": [{
       "id": "A",
       "label": "",
       "type": "string"
     }, {
       "id": "B",
       "label": "",
       "type": "string"
     }, {
       "id": "C",
       "label": "",
       "type": "string"
     }, {
       "id": "D",
       "label": "",
       "type": "string"
     }, {
       "id": "E",
       "label": "",
       "type": "string"
     }],
     "rows": [{
       "c": [{
         "v": "midashi"
       }, {
         "v": "description"
       }, {
         "v": "tags"
       }, {
         "v": "created"
       }, {
         "v": null
       }]
     }, {
       "c": [{
         "v": "見出し1"
       }, {
         "v": "説明1"
       }, {
         "v": "タグ1"
       }, null, {
         "v": null
       }]
     }, {
       "c": [{
         "v": "見出し2"
       }, {
         "v": "説明2"
       }, {
         "v": "タグ2"
       }, null, {
         "v": null
       }]
     }, {
       "c": [{
         "v": "見出し3"
       }, {
         "v": "説明3"
       }, {
         "v": "タグ3"
       }, {
         "v": "43912"
       }, {
         "v": null
       }]
     }],
     "parsedNumHeaders": 0
   }
 });



CASE4
D列の表示形式を日付に戻すと、CASE2と同じくclosに1行目以外の値も入ってきました。

response
/*O_o*/
google.visualization.Query.setResponse({
  "version": "0.6",
  "reqId": "0",
  "status": "ok",
  "sig": "393464895",
  "table": {
    "cols": [{
      "id": "A",
      "label": "midashi 見出し1 見出し2",
      "type": "string"
    }, {
      "id": "B",
      "label": "description 説明1 説明2",
      "type": "string"
    }, {
      "id": "C",
      "label": "tags タグ1 タグ2",
      "type": "string"
    }, {
      "id": "D",
      "label": "created ",
      "type": "date",
      "pattern": "yyyy/MM/dd"
    }, {
      "id": "E",
      "label": "",
      "type": "string"
    }],
    "rows": [{
      "c": [{
        "v": "見出し3"
      }, {
        "v": "説明3"
      }, {
        "v": "タグ3"
      }, {
        "v": "Date(2020,2,22)",
        "f": "2020/03/22"
      }, {
        "v": null
      }]
    }],
    "parsedNumHeaders": 0
  }
});



CASE5
日付が入るD列に日付以外の値が入っていると、CASE2と同じくclosに1行目以外の値も入ってきました。例では日付の列に-を入れています。

response
/*O_o*/
google.visualization.Query.setResponse({
  "version": "0.6",
  "reqId": "0",
  "status": "ok",
  "sig": "374075250",
  "table": {
    "cols": [{
      "id": "A",
      "label": "midashi 見出し1 見出し2",
      "type": "string"
    }, {
      "id": "B",
      "label": "description 説明1 説明2",
      "type": "string"
    }, {
      "id": "C",
      "label": "tags タグ1 タグ2",
      "type": "string"
    }, {
      "id": "D",
      "label": "created - -",
      "type": "date",
      "pattern": "yyyy/MM/dd"
    }, {
      "id": "E",
      "label": "",
      "type": "string"
    }],
    "rows": [{
      "c": [{
        "v": "見出し3"
      }, {
        "v": "説明3"
      }, {
        "v": "タグ3"
      }, {
        "v": "Date(2020,2,21)",
        "f": "2020/03/21"
      }, {
        "v": null
      }]
    }],
    "parsedNumHeaders": 0
  }
});



参考

Google Visualization API Reference
https://developers.google.com/chart/interactive/docs/reference

Latest post

スプレッドシートA列にある複数のテキストをスライドに追加したい(Google Apps Script)

今回Google Apps Scriptでやりたいこと GoogleスプレッドシートA列にある複数の値を取得して Googleスライドに渡して 図形オブジェクトのテキストとして追加したい ① スプレッドシートのA列に値を入れておく ② Code.gsのinsertNewShape...