Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

行数の多いExcelシートの値を2次元配列変数に格納(pushメソッド)したいです。

解決したいこと

Sharepoint内のExcelシートに1万行以上の表があります。
行列の2次元配列になると思いますが、配列変数(cellData)にfor文(行、列のインデックスをカウンタとして使用)とpushメソッドを用いています。
2回目のfor(列カウンタ)のところでシート範囲の値(values[行][列])を変数(data)に格納し、
それを、cellDataにpushで格納しようとしていますが、dataに格納する行でプロパティが読めないとのエラーが出ます。
最終的に、このcellDataを他のスクリプトに渡して、別のシートに入力するのが目的です。
エラー原因と解決法をご教授いただければ幸いです。

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

または、問題・エラーが起きている画像をここにドラッグアンドドロップ
{B925158D-BE1A-47A6-8574-97550DCDF93E}.png

該当するソースコード

function main(workbook: ExcelScript.Workbook) {

let selectedSheet = workbook.getActiveWorksheet();
//最終行を取得
let lastRow = selectedSheet.getCell(0, 0).getRangeEdge(ExcelScript.KeyboardDirection.down).getRowIndex();
// 最終列を取得
let lastCL = selectedSheet.getRange("AAA1").getRangeEdge(ExcelScript.KeyboardDirection.left).getColumnIndex();
// 最終行と最終列の値を取得して変数に。
let values = selectedSheet.getRangeByIndexes(0, 0, lastRow, lastCL).getValues()

//行数RWと列数CLをカウンターにしてfor文。results[行数RW][列数CL]でpush。
let cellData: string[][]=[]
for(let RW =0; RW < lastRow+1; RW++){
    for(let CL=0; CL < lastCL+1; CL++){
        let data = [values[RW][CL]]; ←エラー箇所です。
        cellData.push(data)     
    }
}

}

自分で試したこと

for文内でちゃんとカウンターが動いているかどうかを確認したところ、順番ずつ1行目から値を読み込んでいるので、機能はしているようです。
{F9B242EE-1B70-4AAF-88DE-0A4CA5752AE6}.png

0

1Answer

二重のfor文を使っている理由が分かりません。
単に let cellData = values; で、いいのでは?

1Like

Comments

  1. @takaekokaz

    Questioner

    @nak435 さま
    いつもお世話になっております。

    ご指導に沿って、以下のように書き換えました。
    interface WorksheetData {
    rows: number
    columns: number
    }

    function main(workbook: ExcelScript.Workbook):WorksheetData[] {

    let selectedSheet = workbook.getActiveWorksheet();
    //最終行を取得
    let lastRow = selectedSheet.getCell(0, 0).getRangeEdge(ExcelScript.KeyboardDirection.down).getRowIndex();
    // 最終列を取得
    let lastCL = selectedSheet.getRange("AAA1").getRangeEdge(ExcelScript.KeyboardDirection.left).getColumnIndex();
    // 最終行と最終列の値を取得して変数に。
    let values = selectedSheet.getRangeByIndexes(0, 0, lastRow, lastCL).getValues()
    
    // cellDataに型を指定して、values、最終行列をpushで格納
    let cellData:WorksheetData[]=values
    cellData.push({
        rows: lastRow,
        columns: lastCL
    });
    // 次のスクリプトに渡す。
    return cellData
    

    }

    変数には2次元配列がちゃんと格納されています。最終行列{rows、columns)とともに。ありがとうございました。
    {"body":{"name":"Sumdata","value":[["RouteDate","NUMBER","SelectCd",
    ---中略---
    [45580,111222233,"","BELRIN","","JAY BENAC45580.6141087963],{"rows":6180,"columns":30}]}}

  2. @takaekokaz

    Questioner

    最初のスクリプトで渡された数値(cellData)を別のexcelブックシート「1」に書き込むための2番目のスクリプトを作成しておりますが、cellDataで格納した最終行列、rows: lastRow,columns: lastCL(インデックスにして)を書き込み範囲の決定のために使用したいのですが、どのように記述すればよいでしょうか?

    function main(workbook: ExcelScript.Workbook, cellData:WorksheetData[]) {
    let selectedSheet = workbook.getWorksheet("1");
    selectedSheet.getRangeByIndexes(0, 0,最終行インデックス、最終列インデックス ).setValues(cellData);

    }
    interface WorksheetData {
    rows: number
    columns: number
    }

  3. cellDataで格納した最終行列、rows: lastRow,columns: lastCL(インデックスにして)を書き込み範囲の決定のために使用したいのですが、どのように記述すればよいでしょうか?

    cellData.push({
    rows: lastRow,
    columns: lastCL
    });

    ↑ここで設定した値を参照したいということであれば、
    cellDataの最終要素を取り出せばよいです。

    let lastItem = cellData.length - 1
    let lastRow = cellData[lastItem].rows
    let lastCL = cellData[lastItem].columns
    

    let cellData:WorksheetData[]=values

    型が全然違うので、なぜ代入できるのか不思議です・・・

  4. @takaekokaz

    Questioner

    2個目のスクリプトを実行したところ、下記のエラーが出ました。
    やはり、「型」が違うからsetvaluesできない。ということですね。
    対策として、「let cellData:(number|string)=values」と型を宣言したのですが、同じエラーが帰ってきます。何か大きな誤解をしていると思われますが、正直わかりません、、。
    image.png

  5. @takaekokaz

    Questioner

    2回目のスクリプト実行時に帰ってきたp/aのエラーです。
    image.png

  6. let cellData:WorksheetData[]=values

    型が全然違うので、なぜ代入できるのか不思議です・・・

    ↑やはり、これが原因だと思います。


    渡す側、もらう側、それぞれを以下のように変更します(該当箇所だけ)。

    渡す側の変更前
    let cellData:WorksheetData[]=values
    cellData.push({
        rows: lastRow,
        columns: lastCL
    });
    // 次のスクリプトに渡す。
    return cellData
    
    
    interface WorksheetData {
        rows: number
        columns: number
    }
    
    渡す側の変更後
    let cellData: WorksheetData;
    cellData.Values = values;
    cellData.rows = lastRow;
    cellData.columns = lastCL;
    // 次のスクリプトに渡す。
    return cellData
    
    interface WorksheetData {
        values: string[][];
        rows: number;
        columns: number;
    }
    
    もらう側の変更前
    let lastItem = cellData.length - 1
    let lastRow = cellData[lastItem].rows
    let lastCL = cellData[lastItem].columns
    
    selectedSheet.getRangeByIndexes(0, 0, lastRow, lastCL).setValues(cellData);
    
    
    interface WorksheetData {
        rows: number
        columns: number
    }
    
    もらう側の変更後
    selectedSheet.getRangeByIndexes(0, 0, cellData.lastRow, cellData.lastCL).setValues(cellData.values);
    
    
    interface WorksheetData {
        values: string[][];
        rows: number;
        columns: number;
    }
    
  7. すみません。「渡す側の変更後」の先頭2行を変更しました。

  8. @takaekokaz

    Questioner

    @nak435 さま
    ありがとうございます。
    スクリプトをコピペして試してみましたが、渡す側のスクリプト実行時に下記のエラーが出ました。
    {55FDDE40-183D-4DEA-9238-4836A8473C39}.png

    以下にスクリプトです。
    function main(workbook: ExcelScript.Workbook):WorksheetData {

    let selectedSheet = workbook.getActiveWorksheet();
    //最終行を取得
    let lastRow = selectedSheet.getCell(0, 0).getRangeEdge(ExcelScript.KeyboardDirection.down).getRowIndex();
    let lastCL = selectedSheet.getRange("AAA1").getRangeEdge(ExcelScript.KeyboardDirection.left).getColumnIndex();
    
    //最終行インデックスで範囲指定。
    let values = selectedSheet.getRangeByIndexes(0, 0, lastRow, lastCL).getValues()
    let cellData: WorksheetData;
    cellData.Values = values; ←←エラー箇所
    cellData.rows = lastRow;
    cellData.columns = lastCL;
    // 次のスクリプトに渡す。
    return cellData
    

    }
    interface WorksheetData {
    values: string[][];
    rows: number;
    columns: number;
    }

  9. すみません、小文字でした。

    cellData.values = values;

  10. @takaekokaz

    Questioner

    image.png
    小文字に変えましたが、やはり同じエラーが出ます。

    スクリプトの該当行に「interfaceで宣言している型と合わない。」?というエラーが出ております。
    image.png

    valuesは(string|number|boolean)なので、interface側も下記のようにそれに合わせましたが、今度はproperty読めないエラーがでました。宣言した型とあっているはずなんですが、、。

    image.png

  11. 書き方が違っていました。

        let values = selectedSheet.getRangeByIndexes(0, 0, lastRow, lastCL).getValues()
        let cellData: WorksheetData;
        cellData.Values = values;
        cellData.rows = lastRow;
        cellData.columns = lastCL;
    

    ↑これを、以下のように変更してください。

      let cellData: WorksheetData = {
        values: selectedSheet.getRangeByIndexes(0, 0, lastRow, lastCL).getValues(),
        rows: lastRow,
        columns: lastCL,
      };
    
  12. @takaekokaz

    Questioner

    書き換え後、最初のスクリプトでうまく変数に格納できました。

    しかし2個目のスクリプト実行時に「引数がちがう。」とのエラーが出ます。
    image.png

    以下が2つ目のスクリプトとなります。

    function main(workbook: ExcelScript.Workbook, cellData:WorksheetData){
    let selectedSheet = workbook.getWorksheet("1");
    selectedSheet.getRangeByIndexes(0, 0, cellData.lastRow, cellData.lastCL).setValues(cellData.values);

    }
    interface WorksheetData {
    values: string[][];
    rows: number;
    columns: number;
    }

  13. interfaceを同じにしてみてください。

  14. @takaekokaz

    Questioner

    interfaceを同じにしてみてください。
    それは、下記のようにvaluesの型とinterfaceを同じにして、スクリプト1,2に使用する、という意味でよろしいでしょうか?
    interface WorksheetData {
    values: (string|number|boolean)[][];
    rows: number;
    columns: number;
    }

  15. それは、下記のようにvaluesの型とinterfaceを同じにして、スクリプト1,2に使用する、という意味でよろしいでしょうか?

    その通りです。
    基本、渡す側・受ける側で、型が一致しているべきです。

  16. @takaekokaz

    Questioner

    スクリプト1,2のINTERFACEを同じにして試してみました。
    以下のエラーがスクリプト2の3行目で出ました。1のrowsで格納した最終行、列が読めていないようです。
    image.png
    スクリプト2
    function main(workbook: ExcelScript.Workbook, cellData:WorksheetData){
    let selectedSheet = workbook.getWorksheet("1");
    selectedSheet.getRangeByIndexes(0, 0, cellData.lastRow, cellData.lastCL).setValues(cellData.values);

    }
    interface WorksheetData {
    values: (string | number | boolean)[][];
    rows: number;
    columns: number;
    }

  17. interfaceに書いたメンバー名と合っていませんでした。

    selectedSheet.getRangeByIndexes(0, 0, cellData.lastRow, cellData.lastCL).setValues(cellData.values);

    selectedSheet.getRangeByIndexes(0, 0, cellData.rows, cellData.columns).setValues(cellData.values);

  18. @takaekokaz

    Questioner

    メンバを変更しましたが同じエラーが出ました。
    メンバを変更した後、main関数の引数workssheetDataにエラーが出ています。何か関係ありますでしょうか?
    image.png

    また、このスクリプトで受け取る変数の中にはなぜかrows,columnsが入っていません。
    image.png

    スクリプト1のresultには入っているのですが、、。
    ちなみにこの変数はarray型です。
    image.png

  19. メンバを変更しましたが同じエラーが出ました。

    何と「同じ」エラーでしょうか?

    メンバを変更した後、main関数の引数workssheetDataにエラーが出ています。何か関係ありますでしょうか?

    渡す側・受ける側とも、interface の valuesメンバーを、string[][]に変更してみてください。

    interface WorksheetData {
    values: string[][];

    また、スクリプト1 と スクリプト2 を呼ぶ側のコードも見せてください。

  20. @takaekokaz

    Questioner

    先ずフローの全体像です。
    {679FD7FB-A7DB-4152-88EE-077866FF4AB8}.png

    以下に各アクションのコードを書きます。個人情報にあたるコードは変更しています。
    1「フォルダ内にファイルが作成されたとき(トリガー)
    {
    "type": "OpenApiConnection",
    "inputs": {
    "parameters": {
    "dataset": "https://★★★★.sharepoint.com/teams/★★★★",
    "folderId": "%252fShared%2bDocuments%252fGeneral%★★★★%2bSUMMURY",
    "inferContentType": true
    },
    "host": {
    "apiId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline",
    "connection": "shared_sharepointonline",
    "operationId": "OnNewFile"
    }
    },
    "recurrence": {
    "frequency": "Minute",
    "interval": 1
    },
    "metadata": {
    "%252fShared%2bDocuments%252fGeneral%★★★★%★★★★": "/Shared Documents/General/DASHBOARD SUMMURY"
    }
    }
    2 「変数を初期化する」
    {
    "type": "InitializeVariable",
    "inputs": {
    "variables": [
    {
    "name": "Sumdata",
    "type": "array"
    }
    ]
    },
    "runAfter": {}
    }

    3 「スクリプトの実行」最初のスクリプトを呼び出すアクション。
    {
    "type": "OpenApiConnection",
    "inputs": {
    "parameters": {
    "source": "groups/53f43c9b-2871-4086-989d-c6b6fe41d63a",
    "drive": "b!hbra_TJ5I0yO-eYlU-uFlqzzcsT9lr9FkCkD3Di",
    "file": "@triggerOutputs()?['headers/x-ms-file-id']",
    "scriptId": "ms-officescript%3A%2F%2Fonedrive_business_itemlink%2F013BRNO7ZV2M2UOVMBV5D2GQP4TNX3GH7U"
    },
    "host": {
    "apiId": "/providers/Microsoft.PowerApps/apis/shared_excelonlinebusiness",
    "connection": "shared_excelonlinebusiness",
    "operationId": "RunScriptProd"
    }
    },
    "runAfter": {
    "変数を初期化する": [
    "Succeeded"
    ]
    }
    }

    4 「変数の設定」最初のスクリプトのresultを変数「Sumdata」に設定。
    {
    "type": "SetVariable",
    "inputs": {
    "name": "Sumdata",
    "value": "@outputs('スクリプトの実行')?['body/result/values']"
    },
    "runAfter": {
    "スクリプトの実行": [
    "Succeeded"
    ]
    }
    }

    5 「スクリプトの実行1」 scriptparameter/CellDataに変数Sumdataを使用。
    {
    "type": "OpenApiConnection",
    "inputs": {
    "parameters": {
    "source": "groups/53f43c9b-2871-4086-989d-c6b6fe41d63a",
    "drive": "b!hbra_TJ5I0yO-eYlU-uFlqzzcsT9lr9FkCkD3Dijy3bJyIZPu6HzRLMGFqkaBN-a",
    "file": "01RXQRISPCFMZHZ2H5GFBKH2FN5MPV3KNB",
    "scriptId": "ms-officescript%3A%2F%2Fonedrive_business_itemlink%2F013BRNO7ZDWXQF44ZVF5CY5K4FKSCSSKL5",
    "ScriptParameters/cellData": "@variables('Sumdata')"
    },
    "host": {
    "apiId": "/providers/Microsoft.PowerApps/apis/shared_excelonlinebusiness",
    "connection": "shared_excelonlinebusiness",
    "operationId": "RunScriptProd"
    }
    },
    "runAfter": {
    "変数の設定": [
    "Succeeded"
    ]
    },
    "metadata": {
    "01RXQRISPQ7YVIDGAJPZCIXCSEZ5NTVSJK": "/General/DASHBOARD SUMMURY/コピー先フォルダ/コピー先.xlsx",
    "tableId": null,
    "01RXQRISLRLJRRWWVFR5CZUEWNI67M76UL": "/General/DASHBOARD SUMMURY/コピー先フォルダ/コピー先.xlsx",
    "01RXQRISPCFMZHZ2H5GFBKH2FN5MPV3KNB": "/General/DASHBOARDコピー先/コピー先.xlsx"
    }
    }

  21. @takaekokaz

    Questioner

    フロー実行後の各アクションの出力です。

    3 「スクリプトの実行」の出力
    {
    "result": {
    "values": [
    [
    "RouteDate",
    "NUMBER",
    "CODE",
    "FLIGHT",
    "RANK",
    "CUSTOMER",
    "RECIPIENT",
    "DEST",
    "DISTcity",
    "NOTICE",
    "CLASS",
    "STATUS",
    "DOC",
    "DOC2",
    "ID",
    "INPUT",
    "CHECK",
    "SUBMIT"
    ],
    [
    45580,
    111122223333,
    "",
    "USSS",
    1,
    "VIA IED",
    "AMERICA INC",
    "SFA",
    "AAA",
    "注意",
    "MID",
    "E",
    "",
    "",
    1,
    "Y",
    "",
    ""
    ],
    [
    45580,
    444455556666,
    "",
    "UKKK",
    1,
    "LUCY CAO",
    "",
    "LAX",
    "BBB",
    "管理",
    "LARGE",
    "E",
    "Y",
    "N",
    1,
    "Y",
    "Y",
    "Y"
    ]
    ],
    "rows": 3,
    "columns": 18
    },
    "logs": []
    }

    4 「変数の設定」
    ・入力
    {
    "result": {
    "values": [
    [
    "RouteDate",
    "NUMBER",
    "CODE",
    "FLIGHT",
    "RANK",
    "CUSTOMER",
    "RECIPIENT",
    "DEST",
    "DispLoc",
    "NOTICE",
    "CLASS",
    "STATUS",
    "DOC",
    "DOC2",
    "ID",
    "INPUT",
    "CHECK",
    "SUBMIT"
    ],
    [
    45580,
    111122223333,
    "",
    "USSS",
    1,
    "VIA IED",
    "AMERICA INC",
    "SFA",
    "AAA",
    "注意",
    "MID",
    "E",
    "",
    "",
    1,
    "Y",
    "",
    ""
    ],
    [
    45580,
    444455556666,
    "",
    "UKKK",
    1,
    "LUCY CAO",
    "",
    "LAX",
    "BBB",
    "管理",
    "LARGE",
    "E",
    "Y",
    "N",
    1,
    "Y",
    "Y",
    "Y"
    ]
    ],
    "rows": 3,
    "columns": 18
    },
    "logs": []
    }

    ・出力
    {
    "name": "Sumdata",
    "value": [
    [
    "RouteDate",
    "NUMBER",
    "CODE",
    "FLIGHT",
    "RANK",
    "CUSTOMER",
    "RECIPIENT",
    "DEST",
    "DispLoc",
    "NOTICE",
    "CLASS",
    "STATUS",
    "DOC",
    "DOC2",
    "ID",
    "INPUT",
    "CHECK",
    "SUBMIT"
    ],
    [
    45580,
    111122223333,
    "",
    "USSS",
    1,
    "VIA IED",
    "AMERICA INC",
    "SFA",
    "AAA",
    "注意",
    "MID",
    "E",
    "",
    "",
    1,
    "Y",
    "",
    ""
    ],
    [
    45580,
    444455556666,
    "",
    "UKKK",
    1,
    "LUCY CAO",
    "",
    "LAX",
    "BBB",
    "管理",
    "LARGE",
    "E",
    "Y",
    "N",
    1,
    "Y",
    "Y",
    "Y"
    ]
    ]
    }

    5 「スクリプトの実行1」
    ・入力パラメータ
    {
    "source": "groups/53f43c9b-2871-408★",
    "drive": "b!hbra_TJ5I0yO-eYlU-uFlqzzcsT9lr9FkCkD3D★",
    "file": "01RXQRISPCFMZHZ2H★",
    "scriptId": "ms-officescript%3A%2F%2Fonedrive_business_itemlink%2F013BRNO7ZDWXQF44ZVF5CY5K4FKSCSSKL5",
    "ScriptParameters/cellData": [
    [
    "RouteDate",
    "NUMBER",
    "CODE",
    "FLIGHT",
    "RANK",
    "CUSTOMER",
    "RECIPIENT",
    "DEST",
    "DispLoc",
    "NOTICE",
    "CLASS",
    "STATUS",
    "DOC",
    "DOC2",
    "ID",
    "INPUT",
    "CHECK",
    "SUBMIT"
    ],
    [
    45580,
    111122223333,
    "",
    "USSS",
    1,
    "VIA IED",
    "AMERICA INC",
    "SFA",
    "AAA",
    "注意",
    "MID",
    "E",
    "",
    "",
    1,
    "Y",
    "",
    ""
    ],
    [
    45580,
    444455556666,
    "",
    "UKKK",
    1,
    "LUCY CAO",
    "",
    "LAX",
    "BBB",
    "管理",
    "LARGE",
    "E",
    "Y",
    "N",
    1,
    "Y",
    "Y",
    "Y"
    ]
    ]
    }

    ・出力
    {
    "message": "スクリプトを実行できませんでした。もう一度お試しください。\nOffice JS エラー:Line 3: Worksheet getRangeByIndexes: The argument is invalid or missing or has an incorrect format.\r\nclientRequestId: 96018a30-8f14-44c4-840b-2872e6516df3",
    "logs": []
    }

  22. 2 「変数を初期化する」
    {
    "type": "InitializeVariable",
    "inputs": {
    "variables": [
    {
    "name": "Sumdata",
    "type": "array"

    変数をオブジェクトで初期化してみてください。

    "name": "Sumdata",
    "type": "object"

  23. @takaekokaz

    Questioner

    初期化について“values”に関しては必要ないでしょうか?

  24. 初期化について“values”に関しては必要ないでしょうか?

    Excelスクリプトのinterfaceのメンバーvaluesのことを指すなら、フローレベルでは関係ありません。
    フローでは、Excelスクリプト間の引き渡しの変数はSumdataで定義していますよね。

  25. @takaekokaz

    Questioner

    以下のようなエラーが出ました。
    image.png

    変数の設定のコードです。
    image.png

    "inputs": {
    "name": "Sumdata",
    "value": "@outputs('スクリプトの実行')?['body/result/values']"
    とあるので、sumDataにrows,columnsが入っていないと思われます。

    直前のスクリプト実行のパラメータをどのように変更すべきですか?
    image.png

  26. "inputs": {
    "name": "Sumdata",
    "value": "@outputs('スクリプトの実行')?['body/result/values']"
    とあるので、sumDataにrows,columnsが入っていないと思われます。

    そうですね。
    'body/result'
    としてください。

  27. @takaekokaz

    Questioner

    @nak435
    長きにわたり、懇切丁寧なご指導ありがとうございました。
    おかげさまで構想通りの結果が得られました。
    アレイ型変数もままならなかった私の実力では、今回のコードはハードルが高かったです。オブジェクト関数なんて使う考えも浮かばなかったほどですから、、。
    しかしnak435様のご助力のお陰で達成することができました。
    自分が学ぶべきこと、特に変数の使い方、渡し方など、多くのことを発見できました。
    本当にありがとうございます。

  28. 途中、間違いや見落としがあったりして長引いてすみませんでした。
    解決できてよかったです。

  29. @takaekokaz

    Questioner

    @nak435 さま。
    申し訳ございません。またご指導をいただきたいのですが。
    上記で教えていただいたコードですが、うまくいくパターンといかないパターンがあるようです。数値データのもととなるEXCELファイルは行数、列数の違いはありますが、内容は同じです。以下に「いかないパターン」の入出力とコードをアップしますので、ご指導のほどよろしくお願いします。

    「うまくいかないパターン」
    {D1A2003E-6963-4A11-88E6-AFD64EE1ED8D}.png

    「変数の設定」の出力コード
    {"body":{"name":"Sumdata","value":{"values":[["RouteDate",",,<中略>
    ,,,,4289652,"Z","Z","Z","Z","Z","Z",45604.5862962963]],"rows":10523,"columns":31}}}

    「スクリプトの実行」のOFFICEスクリプト
    function main(workbook: ExcelScript.Workbook, cellData:WorksheetData){
    let selectedSheet = workbook.getWorksheet("SUMMURYCOPY");
    selectedSheet.getRangeByIndexes(1, 69,cellData.rows,cellData.columns).setValues(cellData.values);
    } ←LINE3です。ここの引数が無い、無効、または型が違う。rowsとcolumnsは取得できています。

    interface WorksheetData {
    values: string[][];
    rows: number;
    columns: number;
    }

    「スクリプトの実行」の入力コード
    {"host":{"apiId":"subscriptions/2e6e5a0a-b35f-4167-82de-61b3afa7d1ec/providers/Microsoft.Web/locations/westus/runtimes/msmanaged-na/apis/excelonlinebusiness","connectionReferenceName":"shared_excelonlinebusiness","operationId":"RunScriptProd"},"parameters":{"source":"groups/92d750c0-49ee-473f-960b-c5f4455a760a","drive":"b!mR0ruNes1kmlG8TXhMFiohrx5l7FPoJLjFIqebBWrJTcbYQCO6NOS4b4wC_1kqkd","file":"01OJE3BQG4G63SPQDNTNBZBTJIS3ZC64AH","scriptId":"ms-officescript%3A%2F%2Fonedrive_business_itemlink%2F013BRNO7ZDWXQF44ZVF5CY5K4FKSCSSKL5","ScriptParameters/cellData/values":[["RouteDate",,,,<中略>,,,",4289652,"Z","Z","Z","Z","Z","Z",45604.5862962963]],"ScriptParameters/cellData/rows":10523,"ScriptParameters/cellData/columns":31}}

  30. 渡す側、受け取る側の両方の interface WorksheetData 内の values を変更してみてはどうでしょうか?

    interface WorksheetData
    - values: string[][];
    + values: (string|number|boolean)[][];
    
  31. @takaekokaz

    Questioner

    @nak435さま

    {67CC0300-35EC-4E54-8AAA-C2BF966694EB}.png
    「rows」が定義されていない、とエラーが出ます。
    {8A46182F-6A63-4D55-BF1F-DEB45C8C1C2B}.png
    受け取り側のスクリプトのinterfaceのところに上記のエラーが出ます。

  32. @takaekokaz

    Questioner

    @nak435
    いろいろ試した結果、、うまくいくようになった「みたいです。」
    取得した値の文字列に「"ANDREW KINSMAN/ERIN WEEKS(NOTIFY)"」とか「=DYLAN ORTIZ=」など、エスケープ文字などを含む住所、名前などが入った列があり、これがsetvaluesの引数である、celldata.valuesとしてふさわしくない型にしているのかなぁ?と思ってこの列を削除して試したところ、思惑通りの動作になりました。
    浅学な私の経験則ですが、どう思われますか?

  33. この列を削除して試したところ、思惑通りの動作になりました。

    「エスケープ文字」とは何か分かりませんが、
    「削除してしまって問題ない」のであれば、それでよろしいのでは。

    どう思われますか?

    エラー内容のUndefinedが気になりますが、現物を見ないと何とも分かりません。

  34. @takaekokaz

    Questioner

    改めて、ご指導ありがとうございます。

Your answer might help someone💌