![見出し画像](https://assets.st-note.com/production/uploads/images/51947995/rectangle_large_type_2_48e3fe9dbdd11377f7b0b22577d6efc3.jpeg?width=1200)
Photo by
crystalcoco
OfficeScriptsで名言ボットを作ってみた⑥ 繰り返し同じ処理をしたい🙂for文
こんにちは。aliceです。
OfficeScripts初心者が名言ボットを作ってみたシリーズ。はじめてのOfficeScripts。
OfficeScriptsでfor文を使って繰り返し処理をします。これで何行あっても、次々に処理ができます!ヤッホー。
OfficeScriptsとPowerAutomateで名言ボットを作りました。(OfficeScriptsの使用にはweb版のExcelとライセンスが必要です。)
【前回のあらすじ】
前回はgetRowCountメソッドで最終行を取得しました。
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet();
let range = sheet.getUsedRange();
let rangeValues = range.getValues();
let lastRow = range.getRowCount();
}
今日はfor文でループします。
1 for文
for文を使って上から順番に処理していきます。
for文
for(初期化式; 条件式; 増減式) {
// 処理
}
実際書いてみるとこんな感じになりました。
for (let i = 1; i <= lastRow; i++) {
//処理
}
ここはGASと同じ!
① 変数iの初期値を1にする
② 変数iがlastRow(今回は9)になるまで
③ iを1ずつ足していく
(1,2,3,4,5,6,7,8,9)→9になったので終了
2 for文の初期値を1にする
何度も出てくるこちら
getValue()
指定した範囲の生の値を表します。 返されるデータの型は、文字列、数値、ブール値のいずれかになります。 エラーが含まれているセルは、エラー文字列を返します。 範囲に複数のセルが含まれている場合、最初のセルのデータ (行インデックス 0、列インデックス 0 で表されます) が返されます。
getValues()
指定した範囲の Raw 値を表します。 返されるデータには、文字列、数値、またはブール値を指定できます。 エラーが含まれているセルは、エラー文字列を返します。 戻り値がプラス ("+")、マイナス ("-")、または等号 ("=") で始まる場合、Excel は、この値を数式として解釈します。
今回はgetValuesメソッドを使っていますが、最初のセルのデータは行インデックス0、列インデックス0となります。
列名がインデックス番号0になるので初期値を1からにしています。
3 値を取得してみる
せっかくなので値を取得してみます。
変数iの値を取得してみる。
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet();
let range = sheet.getUsedRange();
let rangeValues = range.getValues();
let lastRow = range.getRowCount();
for (let i = 1; i <= lastRow; i++) {
console.log(i);
}
}
1、2,3…と出力されればOK
ちゃんと出力されてました!
でもよく見ると…。問題?
拡大
ループ内でconsole.logを呼び出すと、スクリプトのパフォーマンスが低下する可能性があります。
だそうです。まぁ今回はテストなのでいっか。
このメッセージはfor文でconsole.logを呼び出すと毎回出ます。
4 今日のまとめ
・繰り返しはfor文を使う
・for文でconsole.logを呼び出すとメッセージが表示される
5 おすすめリンク集
for文はGASと同じです~。
お疲れさまでした!