1

数値を 1 つの列に移動し、文字列を別の列に移動する Google スプレッドシート用の小さなスクリプトを作成しています。かなり基本的なはずですが、私は JS をかろうじていじっているだけで、当然、意味をなさないものに出くわしました。

これがコードです。

function moveData() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var dataToMove = sheet.getRange("A1:A5003");
    var lastRow = sheet.getLastRow();


    for (var i = 0; i <= lastRow - 1; i++)
    {
        var unparsedValue = dataToMove[i];
        if(unparsedValue != "" && typeof unparsedValue === "number" && !isNaN(unparsedValue))
        {
            var parsedValue = unparsedValue;
            Logger.log(parsedValue);

        }
    }
}

明らかにすべてが完了しているわけではありませんが、エラーがスローされますvar unparsedValue = dataToMove[i];

エラーは次のとおりです: クラス "$Proxy810" には、"0" という名前のパブリック インスタンス フィールドまたはメソッドがありません

$Proxy810 とは何ですか? 私が正しく理解していれば、なぜ "0" という名前のフィールドまたはメソッドがあるのでしょうか??

少しイライラすることはありませんが、これについての洞察をいただければ幸いです。

4

1 に答える 1

3

sheet.getRange("A1:A5003")インスタンスを返すことは明らかで$Proxy810あり、ループの最初の値は0この行のコードです

dataToMove[i];
// is the same as 
dataToMove[0];
// is the same as 
dataToMove.0

$Proxy810そのようなプロパティを持っていません。

スプレッドシート API に慣れていませんが、ブラケットを使用してループする必要はなく、代わりに何らかのメソッドを使用する必要があると思いますが、次のようなものを探す必要があります。dataToMove.getRow(i)

編集: Google ショーの最初のスクリプト例として、次のコードを使用する必要があります。

function readRows() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var rows = sheet.getDataRange();
   var numRows = rows.getNumRows();
   var values = rows.getValues();

   for (var i = 0; i <= numRows - 1; i++) {
       var row = values[i];
       Logger.log(row);
   }
};

したがって、あなたの場合、次のようにコードを変更する必要があります。

function moveData() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var dataToMove = sheet.getRange("A1:A5003");
    var numRows = dataToMove.getNumRows();
    var values = dataToMove.getValues();

    for (var i = 0; i <= numRows - 1; i++)
    {
        var unparsedValue = values[i];
        if(unparsedValue != "" && typeof unparsedValue === "number" && !isNaN(unparsedValue))
        {
            var parsedValue = unparsedValue;
            Logger.log(parsedValue);

        }
    }
}
于 2012-08-11T09:31:24.323 に答える