OfficeScriptsで名言ボットを作ってみた⑧ セルを取得したい🙂getCellメソッド
こんにちは。aliceです。
OfficeScripts初心者が名言ボットを作ってみたシリーズ。はじめてのOfficeScripts。
getCellメソッドでセルを取得します。
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");
}
}
}
実行前
実行後
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" とします。 指定されていない場合は、ワークシート全体の範囲が返されます。
エラーになる😣
引数は0か1なのに2つ入れんの??みたいな感じ?
ループできないじゃん😭(offsetを使うのかな?)
ということでgetCellメソッドを使いました。
あと多分起点のセルがA1だからちゃんと動いているのかな?そこはどうなんだろう?今度試してみます。
長くなったのでsetValueメソッドはまた今度。
3 今日のまとめ
・セル範囲の指定で引数を2つ使いたいときはgetCellメソッドを使う
お疲れさまでした!