見出し画像

OfficeScriptsで名言ボットを作ってみた⑧ セルを取得したい🙂getCellメソッド

こんにちは。aliceです。

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

getCellメソッドでセルを取得します。

画像6

OfficeScriptsとPowerAutomateで名言ボットを作りました。(OfficeScriptsの使用にはweb版のExcelとライセンスが必要です。)

前回はif文で条件分岐をしました。

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++) {
   if (rangeValues[i][3] === "") {
     console.log(i);
   }
 }
}

今回は値を入れます。


1 セルに値を入れる

8行目の「console.log(i);」を「sheet.getCell(i, 3).setValue("True");」に書き換えました。

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++) {
   if (rangeValues[i][3] === "") {
     sheet.getCell(i, 3).setValue("True");
   }
 }
}

実行前

画像1

実行後

画像2

D列の全部のセルに「TRUE」が入りました。(エラーが出ているけど…。)


2 getCellメソッド

getCellメソッドを使って値を入れるセルを指定します。

getCell(row, column)
行番号 Range と列番号に基づいて 1 つのセルを含むオブジェクトを取得します。 セルは、ワークシート グリッド内にある限り、親範囲の境界外に配置できます。
getCell(row: number, column: number): Range;

パラメーター
row(number)取得するセルの行番号。 0 を起点とする番号になります。column(number)取得するセルの列番号。 0 を起点とする番号になります。

前回のgetValuesメソッドと同じです。

sheet.getCell(i, 3)

getCell(行番号,列番号)

行番号:i(ループカウンター)

列番号:3(A列:0、B列:1、C列:2、D列:3)になります。


GASだとgetRangeメソッドでもできるのですが、Office Scriptsだとうまくいかなかったผ(•̀_•́ผ)

getRange(address)
アドレスまたは名前で指定された 1 つの四角形のセル ブロックを表す Range オブジェクトを取得します。
getRange(address?: string): Range;
パラメーター addressstring 省略可能。 範囲のアドレスまたは名前を表す文字列。 たとえば、"A1:B2" とします。 指定されていない場合は、ワークシート全体の範囲が返されます。


エラーになる😣

画像6

画像4引数は0か1なのに2つ入れんの??みたいな感じ?

画像5

ループできないじゃん😭(offsetを使うのかな?)

ということでgetCellメソッドを使いました。

あと多分起点のセルがA1だからちゃんと動いているのかな?そこはどうなんだろう?今度試してみます。

長くなったのでsetValueメソッドはまた今度。


3 今日のまとめ

・セル範囲の指定で引数を2つ使いたいときはgetCellメソッドを使う


お疲れさまでした!

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