2017-05-16 3 views
0

配列に値を取得する単純なスクリプトがあり、setvaluesを実行するとドキュメントに行が追加されます。setvaluesは行を追加しています

getvaluesは6115から6154までの行から始まり、同じ範囲に設定すると、ドキュメントに6000以上の行が追加され、Googleシートには現在多くのセルがあるためエラーがスローされます。以下の単純なスクリプトは、より大きな関数から取ったものですが、以下の最も単純なスクリプトでさえ機能しません。

エラーメッセージ: この操作により、ブックのセル数が2000000個のセルの上限を超えます。

function test3() { 
    var ss=SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet=ss.getActiveSheet(); 

    data = sheet.getRange(6115,88,6154,89).getValues(); 
    sheet.getRange(6115,88,6154,89).setValues(data); 
} 

私は何か助けていただきありがとうございます。ありがとう。

答えて

0

getRange()は "getRange(row、column、numRows、numColumns)"です。詳細情報はこちらです。 https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangerow-column-numrows-numcolumns

スプレッドシート内のすべてのセルの数は、次のように表すことができます。あなたのスクリプトから

f1

次のように、getRange(6115,88,6154,89)を書き込むことができます。

f2

この値はエラーとして表示するスプレッドシートの制限よりも大きくなっています。

getValues()の場合、範囲内にデータがなくても、その範囲に対してデータ配列のサイズが作成されます。しかしこれはシートに反映されていません。したがって、このgetValues()が実行されてもエラーは発生しません。

しかし、setValues()の場合は、データの数がシートのサイズより大きい場合に、シートを展開してデータをインポートします。現時点では、データ範囲が制限を超えている場合にエラーが発生します。このエラーを回避するには、セル数と範囲に注意する必要があります。

エラーを回避したい場合は、範囲を縮小するか、このスプレッドシートのシートではない新しいスプレッドシートを作成してデータをインポートしてください。

ご質問が誤解された場合は、申し訳ありません。

+0

ありがとうございます。私はnumRowsの値を最後の行に誤解しました。これは多くを説明します。 –

+0

ようこそ。こちらこそありがとう。あなたの質問が解決したら、同意ボタンを押してください。他の人もこの解決策を確認できます。 http://stackoverflow.com/help/accepted-answer – Tanaike