Google Apps Scriptでスプレッドシートの非表示行を除外してデータを取得する【GAS】
時々、Teratailを除いては、面白そうなテーマということで挑戦して、入門編の教材を作ってたりします。そんな中、「非表示行を除いてデータを取得する」というテーマが出ていたので、作ってみました。
今回のテーマは小ネタですが、意外と使うシーンは多いと思います。
リンク
今回使用するスプレッドシート
歴代の日本の紙幣の登場人物に関するデータのうち、自分に馴染みのあった、福沢諭吉、新渡戸稲造、夏目漱石の行だけを手動で非表示にしています。
ソースコード
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というメソッドもあり、こちらはフィルタで非表示にされた行を判定するのに利用します。
図:見事に非表示行だけを除外して取得できた


