Power Automateを動画で学ぼう!Udemyキャンペーン中

【Office スクリプト】コピペで使える便利なコード集

じょじお

この記事は書きかけです。officeスクリプトの良く使うコードを貯めています。なるべくコピペで使いまわしできるようにしているつもりです。良かったら使ってください。

目次

ブック操作系

  //ファイル名を拡張子付きで取得する。
  let bkname = workbook.getName() 

  //テーブル名を指定してテーブルを取得する。
  let table = workbook.getTable("テーブル1")

  //ブック内のすべてのテーブルを取得する。
  let tables  = workbook.getTables();

シート操作系

  //アクティブシートを取得する。
  //検証していないけど、Power Automateでリモート起動する場合アクティブをコントロールできないからこのコードは使わない方がいいかも。
  let st = workbook.getActiveWorksheet();

  //シートの一番左のシートを取得する。
  let st = workbook.getFirstWorksheet();

  //シートの一番左のシートを取得する。
  let st = workbook.getWorksheets()[1];
  
  //シートの名前を指定して取得する。
  let st = workbook.getWorksheet("ST_NAME");

  //シート名を取得する。
  st.getName();
  
  //シート名を変更する
  st.setName("ST_CHANGED_NAME");
  
  // シートをコピーする。
  let dupst = st.copy(ExcelScript.WorksheetPositionType.after, st);
  
  //シートを削除する。
  st.Delete();
  
  //シート内のすべてのテーブルを取得する。
  let sheets = st.getTables();

セル範囲操作系

  //表示形式の設定(桁区切りあり、小数点以下2桁表示、単位:円)
  st.getRange("D2:E8").setNumberFormat("#,##0.00円");

  //列幅をデータのサイズに合わせて自動調整する。
  st.getUsedRange().getFormat().autofitColumns();

テーブル操作系

  //シート内のすべてのテーブルを取得する。
  let tables = st.getTables();
  //ブック内のすべてのテーブルを取得する。
  let tables = workbook.getTables();

  // テーブル化する。
  let table = workbook.addTable(st.getRangeByIndexes(6, 1, lastrow, lastcol)  , true);

  //テーブル名を設定
  table.setName("table1");
  
  //既に存在するテーブルを取得する。
  let table = workbook.getWorksheets()[0].getTables()[0];
  //テーブルのデータを配列で取得する。(ヘッダーなし)
  let data = table.getRangeBetweenHeaderAndTotal().getValues();
  //テーブルのデータを配列で取得する。(ヘッダーあり)
  let data = table.getRange().getValues();

  //テーブルをソート(1列目を降順)
  table.getSort().apply([{ key: 0, ascending: false }]);

データ範囲を取得する系

  // データ有効範囲を取得する。
  let values = st.getUsedRange().getValues();
  
  // 最初の行番号
  let firstRow = st.getUsedRange().getRowIndex();
  // 最初の列番号
  let firstCol = st.getUsedRange().getColumnIndex();
  
  //最終行番号
  let lastRow = st.getUsedRange().getLastRow().getRowIndex();
  //最終列番号
  let lastCol = st.getUsedRange().getLastColumn().getColumnIndex();
  
  // 行方向のデータ個数
  let lastRow = values.length
  // 列方向のデータ個数
  let lastCol = values[0].length

  //テーブルされていないデータ範囲向け
  //現在のセル範囲を行方向に1シフト、行サイズを―1する。
   let data = rng.getOffsetRange(1, 0).getResizedRange(-1, 0).getValues();

データ範囲を書き出す系

//シートAのデータ範囲をシートBに書き出し。
let stA = workbook.getWorksheet("シートA");
let stB = workbook.getWorksheet("シートB");
data = stA.getUsedRange().getValues();
stB.getRangeByIndexes(0, 0, data.length, data[0].length).setValues(data);

データ範囲操作系(配列操作系)

  //forEach
  //アロー関数を使わない場合
  sheets.forEach( function (sheet) {
    console.log(sheet);
  });

  //アロー関数を使う場合
  sheets.forEach( sheet => console.log(sheet));

  //map
  let arr = sheets.map(st => st.getName())
  
  //mapとforeachの違いマップは結果を配列として返すことができる。
  //forEachの場合
  let arr:string[] = [];
  sheets.forEach(st => arr.push(st.getName()))
  //mapの場合
  let arr = sheets.map(st => st.getName())

  //firter関数
  let arr = sheets.filter(sheet => sheet.getName() === "シート2")
 

デバッグ

  console.log(VARIABLE);

ノンプログラマーでも自動化スキルを身につける。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
目次
閉じる