LoginSignup
1
1

名前に左右されないシートの取得方法

Posted at

getSheetByName()メソッドだと、「シート名を変更されたらどうしよう」という不安が残りますし、getSheets()[index]はシートの位置が変わった瞬間にとんでもないことになります。

これが不安なので、シートの名前に左右されない方法を考えました。

ソースコード

function getSheetById(id){

  const sheets = ss.getSheets();
  return sheets.find(sheet => sheet.getSheetId() === id);

}

スプレッドシートのURLからシートIDを確認できます。これは固定値なので、シートの名前が変更されても、位置が変わっても影響を受けません。

ということで、過去のこちらも対応させます。

const sheets = new Proxy({e : ss},{
    get(t,p){
      if(t[p]) return t[p];
      t[p] = t.e.getSheetByName(p) || this.q(t,p);
      return t[p];
    },
    q(t,p){ 
      for(const s of t.e.getSheets()){
        t[s.getSheetId()] = s;
        if(s.getSheetId() === (p|0)) return t[p];
      }
      return null;
    }
  });
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1