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;
}
});