Office スクリプトで組み込みの JavaScript オブジェクトを使用する

JavaScript には、JavaScript または TypeScript (JavaScript のスーパーセット) のどちらでスクリプトを作成しているかに関係なく、Office スクリプトで使用できる組み込みオブジェクトがいくつか用意されています。 この記事では、Office Scripts for Excel で組み込みの JavaScript オブジェクトの一部を使用する方法について説明します。

注:

すべての組み込み JavaScript オブジェクトの完全な一覧については、Mozilla の 標準組み込みオブジェクトに関する記事を 参照してください。

配列

Array オブジェクトは、スクリプト内の配列を操作するための標準化された方法を提供します。 配列は標準の JavaScript コンストラクトですが、範囲とコレクションという 2 つの主要な方法で Office スクリプトに関連します。

範囲の操作

範囲には、その範囲内のセルに直接マップされる複数の 2 次元配列が含まれています。 これらの配列には、その範囲内の各セルに関する特定の情報が含まれています。 たとえば、 Range.getValues これらのセル内のすべての値を返します (2 次元配列の行と列を、そのワークシートサブセクションの行と列にマッピングします)。 Range.getFormulas および Range.getNumberFormats は、 のような Range.getValues配列を返す他の頻繁に使用されるメソッドです。

次のスクリプトは 、A1:D4 範囲で "$" を含む任意の数値形式を検索します。 スクリプトは、それらのセルの塗りつぶしの色を "黄色" に設定します。

function main(workbook: ExcelScript.Workbook) {
  // Get the range From A1 to D4.
  let range = workbook.getActiveWorksheet().getRange("A1:D4");

  // Get the number formats for each cell in the range.
  let rangeNumberFormats = range.getNumberFormats();
  // Iterate through the arrays of rows and columns corresponding to those in the range.
  rangeNumberFormats.forEach((rowItem, rowIndex) => {
    rangeNumberFormats[rowIndex].forEach((columnItem, columnIndex) => {
      // Treat the numberFormat as a string so we can do text comparisons.
      let columnItemText = columnItem as string;
      if (columnItemText.indexOf("$") >= 0) {
        // Set the cell's fill to yellow.
        range.getCell(rowIndex, columnIndex).getFormat().getFill().setColor("yellow");
      }
    });
  });
}

コレクションを操作する

多くの Excel オブジェクトがコレクションに含まれています。 コレクションは Office Scripts API によって管理され、配列として公開されます。 たとえば、ワークシート内のすべての図形は、 メソッドによってWorksheet.getShapes返される に含まれていますShape[]。 この配列を使用してコレクションから値を読み取るか、親オブジェクトのメソッドから特定の get* オブジェクトにアクセスできます。

注:

これらのコレクション配列からオブジェクトを手動で追加または削除しないでください。 親オブジェクトの add メソッドと、 delete コレクション型オブジェクトの メソッドを使用します。 たとえば、 メソッドを使用Worksheet.addTableして TableWorksheet に追加し、 を使用して Table.deleteを削除しますTable

次のスクリプトは、現在のワークシート内のすべての図形の種類をログに記録します。

function main(workbook: ExcelScript.Workbook) {
  // Get the current worksheet.
  let selectedSheet = workbook.getActiveWorksheet();

  // Get the shapes in this worksheet.
  let shapes = selectedSheet.getShapes();

  // Log the type of every shape in the collection.
  shapes.forEach((shape) => {
    console.log(shape.getType());
  });
}

次のスクリプトは、現在のワークシートの最も古い図形を削除します。

function main(workbook: ExcelScript.Workbook) {
  // Get the current worksheet.
  let selectedSheet = workbook.getActiveWorksheet();

  // Get the first (oldest) shape in the worksheet.
  // Note that this script will thrown an error if there are no shapes.
  let shape = selectedSheet.getShapes()[0];

  // Remove the shape from the worksheet.
  shape.delete();
}

日付

Date オブジェクトは、スクリプト内の日付を操作するための標準化された方法を提供します。 Date.now() は、現在の日付と時刻を持つオブジェクトを生成します。これは、スクリプトのデータ エントリにタイムスタンプを追加するときに便利です。

次のスクリプトは、現在の日付をワークシートに追加します。 このメソッドを toLocaleDateString 使用すると、値が日付として認識され、セルの数値形式が自動的に変更されることに注意してください。

function main(workbook: ExcelScript.Workbook) {
  // Get the range for cell A1.
  let range = workbook.getActiveWorksheet().getRange("A1");

  // Get the current date and time.
  let date = new Date(Date.now());

  // Set the value at A1 to the current date, using a localized string.
  range.setValue(date.toLocaleDateString());
}

サンプルの [ 日付の処理 ] セクションには、より多くの日付関連のスクリプトがあります。

数学

Math オブジェクトは、一般的な数学演算のメソッドと定数を提供します。 これらは、ブックの計算エンジンを使用することなく、Excel でも使用できる多くの関数を提供します。 これにより、スクリプトがブックのクエリを実行する必要がなく、パフォーマンスが向上します。

次のスクリプトでは、 を使用 Math.min して 、A1:D4 範囲内の最小の数値を検索してログに記録します。 このサンプルでは、範囲全体に文字列ではなく数値のみが含まれていることに注意してください。

function main(workbook: ExcelScript.Workbook) {
  // Get the range from A1 to D4.
  let comparisonRange = workbook.getActiveWorksheet().getRange("A1:D4");

  // Load the range's values.
  let comparisonRangeValues = comparisonRange.getValues();

  // Set the minimum values as the first value.
  let minimum = comparisonRangeValues[0][0];

  // Iterate over each row looking for the smallest value.
  comparisonRangeValues.forEach((rowItem, rowIndex) => {
    // Iterate over each column looking for the smallest value.
    comparisonRangeValues[rowIndex].forEach((columnItem) => {
      // Use `Math.min` to set the smallest value as either the current cell's value or the previous minimum.
      minimum = Math.min(minimum, columnItem);
    });
  });

  console.log(minimum);
}

外部 JavaScript ライブラリの使用はサポートされていません

Office スクリプトでは、外部のサード パーティ製ライブラリの使用はサポートされていません。 スクリプトでは、組み込みの JavaScript オブジェクトと Office スクリプト API のみを使用できます。

関連項目