
【Officeスクリプト】複数のシートで同じ処理をする
こんにちは。aliceです。
今日はゆるめにさくっと書いてみました。
今回はOfficeスクリプトで複数のシートで同じ処理をします。
それぞれのシートのA1セルにシート名を入力します。
別にシート名でなくても良いんですけどね。なんとなくシート名にしてみました。
複数のシートで同じ処理をする
まず、シートを3つ用意しました。
いつものさつまいもちゃんシリーズです🍠

この3つのシートすべてにA1セルにシート名を入力します。
function main(workbook: ExcelScript.Workbook) {
const sheets = workbook.getWorksheets();
for (let sheet of sheets) {
sheet.getRange("A1").setValue(sheet.getName());
}
}
getWorksheets()メソッドを使って、すべてのワークシートのコレクション取得します。
そのあとはfor…of文を使って一つずつ処理をしていきます。
あんのういもシートのA1セルにシート名が入力されました。

特定のシートを除いて複数のシートで同じ処理をする①
次は特定のシートを除いた複数のシートで同じ処理をしていきます。
集計用のシートなど、このシートは同じ処理をしなくていいんだよーということありますよね。そんなイメージです。
先ほどのブックにさつまいもシートを追加しました。

さつまいもシートを除いたすべてのシートでA1セルにシート名を入力します。
function main(workbook: ExcelScript.Workbook) {
const sheets = workbook.getWorksheets();
for (let sheet of sheets) {
if (sheet.getName() !== "さつまいも") {
sheet.getRange("A1").setValue(sheet.getName());
}
}
}
比較演算子(!==)を使ってシート名が「さつまいも」でないときは処理をします。
さつまいもシートのA1セルは空欄のままです。

べにはるかシートのA1セルにはシート名が入力されました。

特定のシートを除いて複数のシートで同じ処理をする②
最後は処理をしないシートが複数あったときのパターンです。
先ほどのブックにさらにじゃがいもシートを追加します。

今回はじゃがいもシートとさつまいもシートを除いて処理をしていきます。
function main(workbook: ExcelScript.Workbook) {
const sheets = workbook.getWorksheets();
const sheetNameArray = ["じゃがいも", "さつまいも"];
for (let sheet of sheets) {
if (sheetNameArray.includes(sheet.getName())) continue
sheet.getRange("A1").setValue(sheet.getName());
}
}
まず、処理をしないシートを配列sheetNameArrayに入れます。
そして、includes()メソッドを使ってシート名がsheetNameArrayの要素と一致したら(Trueを返したら)if文をスキップして、次のシートを判定します。
一致しなかったら、A1セルにシート名を入力する処理を行います。
🥔includes()メソッド
🥔continue
じゃがいもシートのA1セルは空欄のままです。

シルクスイートシートのA1セルにはシート名が入りました。

getWorksheets()メソッドでワークシートのコレクションを取得して、for…of文で処理するといい感じになりますね。
お疲れさまでした🎉
お茶でもしましょう🍵

Officeスクリプト記事まとめ📝
『Officeスクリプト入門講座』を書きました📝