私はいくつかのシートを持つ1つのスプレッドシートを持っています。私は1つの範囲のデータを取得し、それをフィルタリングし、フィルタリングされたデータのsetvaluesを別のシートに加えたいとします。 私はそれを行うことができます.getvaluesとその配列内のすべての値をループし、私は新しい配列に必要なものをプッシュし、新しいシートに.setvalue(行ごと)を押します。 私が本当に望むのは、バッチの.setvaluesを使ってたくさんのことをスピードアップすることです。 問題は、私は2番目の配列に値をプッシュし、3D配列で終わり、.setvaluesは2次元配列のみを受け入れることです。 私はたくさんの検索をしていて、同様の問題(here、here)が見つかりましたが、私の問題の解決策はありませんでした。 値を設定するために行ごとにループするよりも速い解決策が必要です。3D配列をGASの2D配列に変換するにはどうすればよいですか?
私のコードは次のようになります。
var shSales=ss.getSheetByName('Relação de Vendas'), lrowSales=shSales.getLastRow();
var shArchive=ss.getSheetByName('Hx Faturação')
var shSalesData=shSales.getRange(7,1,lrowSales-6,15).getValues();
var InvoicedSales=[];
var deleted=0;
for (var i in shSalesData) {
if (shSalesData[i][12]!=[] && shSalesData[i][13]!=[] && shSalesData[i][14]!=[]) {
InvoicedSales[i]=[];
InvoicedSales[i].push(shSalesData[i]);
shSales.deleteRow((parseInt(i)+7)-deleted);
deleted++;
}
}
var lrowArchive=shArchive.getLastRow();
var range=shArchive.getRange(lrowArchive+1, 1, 2, 15);
range.setValues(InvoicedSales);
SpreadsheetApp.flush();
あなたは私のフィギュアこれを助けることはできますか?
[MCVE]サンプル入力データを追加してくださいセルを占有するものの空白という真ん中に行と
するスプレッドシートの値を設定します。 –
'InvoicedSales.push(shSalesData [i]);'? –
@RobinGertenbach私の答えを書いている間、あなたのコメントが上がった。可能な限り短期間で、あなたは正しいです。 OPについては、私の答えはまた、あなたがこの問題をどこに、なぜ持っているのかを説明します。私はそのコメントを投票するだろう! – Vytautas