Google Apps Scriptでスプレッドシートの非表示行を除外してデータを取得する【GAS】
時々、Teratailを除いては、面白そうなテーマということで挑戦して、入門編の教材を作ってたりします。そんな中、「非表示行を除いてデータを取得する」というテーマが出ていたので、作ってみました。
今回のテーマは小ネタですが、意外と使うシーンは多いと思います。
リンク
今回使用するスプレッドシート
歴代の日本の紙幣の登場人物に関するデータのうち、自分に馴染みのあった、福沢諭吉、新渡戸稲造、夏目漱石の行だけを手動で非表示にしています。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
function hiderowskip(){ //スプレッドシートを取得 const sheet = SpreadsheetApp.getActiveSpreadsheet(); const values = sheet.getSheetByName("money").getRange("A2:C").getValues(); //格納用の配列 let temparr =[]; let cnt = 2 for(i=0; i<values.length; i++){ //非表示行かどうか判定 let hidden = sheet.isRowHiddenByUser(cnt); console.log(hidden) if(hidden == true){ //非表示行なので何もしない }else{ temparr.push(values[i]) } //カウンタを追加 cnt = cnt + 1; }; //結果を表示 console.log(temparr); } |
- データ自体はタイトル行を除いて2行目から取得させています。
- 手動で非表示またはスクリプトで非表示させた行の判定は、isRowHiddenByUserメソッドで判定し、true/falseを取得します。
- なお引数の値は行番号で今回は2行目からデータを取得させているので、cntの値は2を指定しています。0からではないので注意。
- 判定がtrueの場合は非表示なので、特に何もしない。falseの場合は非表示ではないので配列に追加
- 最後にconsoleで表示されてる行の値の塊を表示させています。
- なお、isRowHiddenByFilterというメソッドもあり、こちらはフィルタで非表示にされた行を判定するのに利用します。
図:見事に非表示行だけを除外して取得できた