私は現在、2つの列を持つリストを持っています。最初の列は生徒の名前で、2番目の列は生徒の所在地の数です。重複するセルをGoogleアプリケーションスクリプトと一緒にマージするにはどうすればよいですか?
複数のスプレッドシートからこのリストをインポートしたので、生徒の名前に重複が多数ありました。私は重複を取り除くことができますが、私は彼らが持っている合計点を集計したいと思います。例:これは私がこれまで持っているものである
エイミー22 ボブ9 キャロル15
:
エイミー10 ボブ9 キャロル15 エイミー12
はに変わるだろう。
var target = SpreadsheetApp.getActiveSpreadsheet();
var sheet = target.getSheetByName("Sheet2");
var data = sheet.getRange("A2:B1000").getValues();
var newData = new Array();
var k = 0
var finallist = []
for(i in data){
k++;
var row = data[i];
var duplicate = false;
for(j in newData){
if(row[0] == newData[j][0]){
duplicate = true;
var storedHour = sheet.getRange("B"+k).getValue();
var position = finallist.indexOf(row[0]);
var originalCell = sheet.getRange("B"+(position+1));
var originalHour = originalCell.getValue();
originalCell.setValue(originalHour + storedHour);
sheet.getRange(k,2).setValue("")
sheet.getRange(k,1).setValue("")
}
}
if(!duplicate){
newData.push(row);
finallist.push(row[0])
}
}
}
問題は、私たちは非常に大きなデータサンプルを持っており、Googleの5分間の最大実行時間を超えてしまう恐れがあることです。私の目標を達成するためのさらに効率的な方法がありますか?
あなたは期待どおりに動作していないのですか?あなたは何を持っているのですか? – Tom
申し訳ありません説明に実際の問題を入れているのを忘れてしまいました。どのように不注意。私はコードをより効率的にする方法を考えていました。なぜなら、私はGoogleの5分間の最大実行時間の下で実行したいからです。これを説明に追加します。 –
母、簡単に、心配することはありません。私はGoogle Scriptについてはあまりよく分かりませんが、MapReduceのような気持ちになるか、タスクを別の仕事に分割するとうまくいくかもしれません。 – Tom