Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

officeスクリプトでは処理できるけど、power automateではエラーが出ます。

解決したいこと

power automateのフローアクション「ファイルの作成」で作成したexcelファイルのシート「Sheet1」以外のページを削除したいです。
officeスクリプト単体だと処理を実行できますが、power automateの「スクリプトを実行」だとエラーが出ます。
エラーの原因と解決法を教えていただければ幸甚です。

例)
power automateのフローとエラーのスクショです。
image.png
スクリプトを実行の出力画面です。
image.png

発生している問題・エラー

アクション 'スクリプトの実行' に失敗しました: 実行中に Office スクリプトでエラーが発生し、完了しませんでした。Power Automateフローで一部の API が失敗します。 ランタイム エラー: Line 5: allSheets.findAsync is not a function。 clientRequestId: 6afa565f-6831-4dc5-a879-c2c9a2ba1386




![uploading...0]()


### 該当するソースコード
officeスクリプトのコードです。

function main(workbook: ExcelScript.Workbook) {
const allSheets = workbook.getWorksheets();

// 「Sheet1」が存在するか確認
const sheet1 = allSheets.find(sheet => sheet.getName() === "Sheet1");

if (!sheet1) {
    console.log("Sheet1 が存在しません。処理を中止します。");
    return;
}

// 「Sheet1」以外のシートを削除
allSheets.forEach(sheet => {
    if (sheet.getName() !== "Sheet1") {
        sheet.delete();
    }
});

}


### 自分で試したこと
power automateのフローだと動かなくなる現任がわかりません。
Line 5: allSheets.findAsyncのファンクションはofficeスクリプトには書かれていないのですが、、。
0 likes

1Answer

Comments

  1. @takaekokaz

    Questioner

    @yubarion さま
    お世話になっております。
    以下のように改造したら、うまく処理できました!
    function main(workbook: ExcelScript.Workbook) {
    const allSheets = workbook.getWorksheets();
    let sheet1: ExcelScript.Worksheet | undefined;

    // 「Sheet1」をfindでなく、getnameで取得する。
    for (let i = 0; i < allSheets.length; i++) {
        if (allSheets[i].getName() === "Sheet1") {
            sheet1 = allSheets[i];
            break;
        }
    }
    
    if (!sheet1) {
        console.log("Sheet1 が存在しません。処理を中止します。");
        return;
    }
    
    // 「Sheet1」以外のシートを削除
    for (let i = 0; i < allSheets.length; i++) {
        if (allSheets[i].getName() !== "Sheet1") {
            allSheets[i].delete();
        }
    }
    

    }
    // findメソッドはpower automateでは使用できないのでfor でシート名があるものをgetする。

    引用していただいたリンクには
    "there's no findAsync method in the Office Scripts API.,,,,"
    と書いていましたね。P/Aか、Officeスクリプトのどちらに問題があるのかはわからないのですが、P/Aのスクリプト実行アクションで実行できないofficeスクリプトのメソッドがある、という理解でよいのでしょうか?
    同様のエラーが出たときは、officeスクリプト側のメソッドなどを変えるようにしようと思います。
    ありがとうございました。

Your answer might help someone💌