OfficeScripts | セルへの書き込み
こんにちは。ふらです。今日はOfficeScriptsでのセルの書き込みについてお話していきたいと思います。
セルへ書き込む
OfficeScriptsでセルへ書き込みをする場合には、getCellメソッドまたはgetRangeメソッドの引数に書き込み位置を指定して、setValueメソッドの引数に書き込み内容を指定します。下記コードをご確認願います。
function main(workbook: ExcelScript.Workbook) {
//シートオブジェクト取得
let sh = workbook.getWorksheet("Sheet1"); //シート名を取得
//セルへ書き込み
sh.getCell(0, 0).setValue(1); //A1セル
sh.getRange("A2").setValue("ABC");
}
OfficeScriptsで気を付けるべき点は、getCell(0,0)がA1セルを指定することです。VBAやGoogleAppsScriptでは(1,1)がA1セルとなっていますので、getCellメソッドを使って指定する際には注意しましょう。
getCellを使ってfor文で大量に書き込まないこと
VBAではマシンパワーがありますので、セルに対してfor文を使ってデータを書き込むことが容易ですが、OfficeScriptsはクラウドで実行されますので、1つ1つのセルにfor文で書き込むと極端に処理が遅くなります。
下記のようなコードは書かないように注意しましょう。
//非推奨のコードの書き方
function main(workbook: ExcelScript.Workbook) {
//シートオブジェクト取得
let sh = workbook.getWorksheet("Sheet1"); //シート名を取得
//getCellを使ったセルへ書き込み
for (let row = 0; row < 1000; row++) {
sh.getCell(row, 0).setValue(row);
}
}
大量のデータは配列を使って書き込もう
WebでExcelへ大量の書き込みをしたいときは配列を使って書き込みましょう。読み取り回数、書き込み回数を減らすことで、OfficeScriptsのパフォーマンスは劇的に向上します。OfficeScriptsにおいては必須のやり方ですのでぜひ参考にしてみてください。
//配列を使った推奨のコードの書き方
function main(workbook: ExcelScript.Workbook) {
//シートオブジェクト取得
let sh = workbook.getWorksheet("Sheet1"); //シート名を取得
//配列を作成
const records: number[][] = [];
for (let row = 0; row < 1000; row++) {
records.push([row]);
}
//配列を使ったデータの書き込み
sh.getRangeByIndexes(0, 0, records.length, records[0].length).setValues(records);
}
これにより、非推奨のコードでは1000回Excelに書き込んでいたものが1回Excelに書き込むだけで済みますので、OfficeScriptsの処理速度が格段に速くなります。
#OfficeScripts #Officeスクリプト #プログラミング #自動化 #業務効率化 #エクセル #M365 #ExcelOnline #osts
この記事が気に入ったらサポートをしてみませんか?