見出し画像

OfficeScriptsで名言ボットを作ってみた⑥ 繰り返し同じ処理をしたい🙂for文

こんにちは。aliceです。

OfficeScripts初心者が名言ボットを作ってみたシリーズ。はじめてのOfficeScripts。

OfficeScriptsでfor文を使って繰り返し処理をします。これで何行あっても、次々に処理ができます!ヤッホー。

画像10

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文を使って上から順番に処理していきます。

画像1

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となります。

画像2

列名がインデックス番号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

画像9

ちゃんと出力されてました!

画像4


でもよく見ると…。問題?

画像7

画像8

画像9

拡大

画像7


画像8

ループ内でconsole.logを呼び出すと、スクリプトのパフォーマンスが低下する可能性があります。

だそうです。まぁ今回はテストなのでいっか。

このメッセージはfor文でconsole.logを呼び出すと毎回出ます。


4 今日のまとめ

・繰り返しはfor文を使う

・for文でconsole.logを呼び出すとメッセージが表示される


5 おすすめリンク集

for文はGASと同じです~。


お疲れさまでした!


この記事が気に入ったらサポートをしてみませんか?