3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ExcelのOfficeスクリプトを触ってみた

Posted at

Officeスクリプトって?

主にExcel内で使用できるスクリプトです。
セルに色をぬったり値を変更したり操作を保存できたり…と、やっていることはVBAマクロみたいなイメージですが、Power Automateから呼び出すことができます!
※Power Automate for DesktopはVBA呼び出しができます

ExcelでOfficeスクリプトを作成する方法

  1. スクリプトを埋め込みたいExcelをブラウザで開きます
  2. 「自動化」タブを選択します
  3. タブ内の「新しいスクリプト」をクリックします

今回やってみたこと

グループ メールアドレス
グループ1 aaa@abc.co.jp
グループ1 bbb@abc.co.jp
グループ2 ccc@abc.co.jp
グループ2 ddd@abc.co.jp

上記のようなテーブルがあるExcelで、指定したグループの任意の1つのメールアドレスを取得します。
Power Automateで全て実装しようかとも思ったのですが、
Officeスクリプトの方がわかりやすいコードを書けるのでは?と思い着手しました。

コード

function main(workbook: ExcelScript.Workbook, group:string) {
    // テーブル取得
    let myTable = workbook.getTable("テーブル1");

    // テーブルとれたかな?
    if (myTable) {
        const GROUP_INDEX = 1;
        const EMAIL_INDEX = 2;

        let bodyRange = myTable.getRangeBetweenHeaderAndTotal();
        let tableRowCount = bodyRange.getRowCount();
        let bodyRangeValues = bodyRange.getValues();
        let email: Array<string> = new Array();

        // グループが引数groupと一致するメールアドレスを配列に詰める
        for (let i = 0; i < tableRowCount; i++) {
            let row = bodyRangeValues[i];

            if (row[GROUP_INDEX] == group) {
              email.push(row[EMAIL_INDEX].toString());
            }
        }

        // 配列からランダムにピックアップする
        const randomInt = Math.floor(Math.random() * email.length);
        return email[randomInt];
    } else {
        console.log(`MyTable is not in the workbook.`);
    }
}

Power Automateからの呼び出し

Excel Online (Business) の 「スクリプトの実行」を選択し、
対象のスクリプトを選択すれば呼び出し可能です。
image.png

戻り値を使用したい場合は、「result」という形で変数を参照することができます。
image.png

参考にしたサイト

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?