はじめに
スプレッドシートにて、シート内にシート名を入力するセルがあり、そのセルの値を変更した際にシート名も自動で変えたかったので、方法をメモ。
内容
以前、シートを編集した際に更新日時を自動で更新する方法を記載したが、その方法と似ている。
(参考)【GAS】シートの最終更新日を自動入力する
シート名の自動更新
function getUpdateTime(e){
const range = e.range;
const sheet = range.getSheet();
if(range.getRow() == 3 && range.getColumn() == 11){
sheet.getRange('K5').setValue(Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy-MM-dd"));
sheet.setName(sheet.getRange('K3').getValue());
}
}
詳細
まず、セルを編集した際に呼ばれる関数を適当に作成する。
その関数にて、編集したセルの位置が指定したセルに一致したなら、シート名をsheet.setName()
にて設定する。
1つ注意しておきたいのは、この関数が呼ばれるのはどうやらセルを編集した後らしいので、編集したシート名が特定のシート名と一致したなら、~のような条件をif文の条件に含めてしまうとif文に入らなくなってしまうことだ。
まとめ
まとめると、セル編集時にsheet.setName()
を呼ぶことでシート名を変更できる。
セルに入力するだけで自動で何かを更新できるようになると、ユーザにとっては便利になることが多いはずなので、今後も調べつつメモしていこうかと思う。