2017-05-16 21 views
0

Googleのシートを使用していたため、適切なSQLデータベースなどを使用していませんでした。 私は大量のデータが常に更新されており、毎日フォーム応答に多くの行が追加されているため、インポートレンジを避けようとしています。それはコピー今Google App Scriptサービスのエラー:スプレッドシート

function CopyTaskSource() { 
var sss = SpreadsheetApp.openById('1OPnw_7vTCFkChy8VUKhAG5QRhcpKnDbmod0ZxjG----'); //replace with source ID 
var ss = sss.getSheetByName('TASK Status'); //replace with source Sheet tab name 
    var range = ss.getRange('E:L'); //assign the range you want to copy 
var data = range.getValues(); 

var tss = SpreadsheetApp.openById('1T3tqsHvKxuulYxDnaR3uf-wjVdXwLHBcUgI7tgN----'); //replace with destination ID 
var ts = tss.getSheetByName('TaskSource'); //replace with destination Sheet tab name 
ts.getRange(1, 1, data.length, data[0].length).setValues(data); //you will need to define the size of the copied data see getRange() 

} 

:IMPORTRANGEは絶えず私が(静的なテキストとして)別のソーススプレッドシートからコピーするには、この幻想的なコードを見つけたので、私はさらにデータを操作することができ、「内部サーバーエラーをIMPORTRANGE」

で失敗します約15,000行のデータがあり、私は50,000行のデータ(そして他のいくつかのシートは最大27列)になると思います。

私はこのサービスエラーを取得し始めました。スプレッドシート9行目(コードの最後の行)。

imageOfServiceError

誰かが複数のGoogleスプレッドシートファイルに転送する大量のデータを取得するために私の回避策を助言していただけますか?

importrangeがうまくいかず、ソースレスポンスを組み合わせてプレゼンテーション可能なスプレッドシートを出力するためにデータを操作する必要があるGoogleフォームがいくつかあります。

は、だから私は問題がある場合に電子メールを送信するスクリプトで現在働いています

+1

私は問題はあなたが(https://productforums.google.com/forum/#!msg [スプレッドシート]ごとに許可された細胞の数の制限を超えていると思い/ docs/g8RkXItHY0M/ntC02cXtpMMJ) –

+0

こんにちは、私はこの場合200万のセルの限界の下で数えました。 そのため、ソースデータを他のシートにコピーして、さらに操作する必要がある場合は、1枚のシートにすべての情報を追加しようとすると元のフォームレスポンスの制限を超えてしまいます。 –

+0

200,000 –

答えて

0

ありがとう、それは、既存の三つの値[タイプ、ID、ステータス]を含む、値の配列を追加します[[値1]、[値2]など]で終わる配列。

getRangeの3番目のパラメータをarray.lengthとして残しても同じエラーが発生しました。私は昨日、array.lengthを1ずつ減算することでそれを動作させました。これを以下に示します。多分あなたは9行目でこれを試して、それが修正されているかどうか確認できますか?

それはまったく同じスクリプトを実行した後、今日のことを言及することが重要で、それが(原因サービスのエラーを修正するように見えた同じ減算に)私の範囲のサイズが誤っていたことを示すエラーを与えた

私は思いますそれはGoogle側で壊れているかもしれないが、それは私が確認できるものではない。

この:

ts.getRange(1, 1, data.length, data[0].length).setValues(data); 

はこのようになります。あなたのためにそれを修正

ts.getRange(1, 1, data.length - 1, data[0].length).setValues(data); 

希望、私は本当にそれが一日ではなく、別の仕事することを決定した理由として困惑しています...

また、waitLockを追加して、書き込みを試みる前に他のプロセスが終了するのを待っていますが、書き込むデータがはるかに小さく、一度に3〜6行だけしかないことに気付きました。ここにはコードがありますが、これはシートの一番上にデータを挿入することですが、一番下には挿入しません。 (エンリケG.アブレウ、Original Postから)

function insertRow(sheetI, rowData, optIndex) { 
    var lock = LockService.getScriptLock(); 
    lock.waitLock(30000); 
    try { 
    var index = optIndex || 1; 
    sheetI.insertRowsBefore(index,rowData.length).getRange(index, 1, rowData.length, 3).setValues(rowData) 
    SpreadsheetApp.flush(); 
    } finally { 
    lock.releaseLock(); 
    } 
} 
関連する問題