サプライヤーのリストを含むスプレッドシートからテーブルを作成するスクリプトを作成しようとしています。スプレッドシートには 1000 を超えるエントリがあるため、スクリプトの処理が非常に遅くなります。ここにコードがあります
function SupplerAnalysis() {
//Importing data
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
//Creating a sheet
if (ss.getSheetByName("Analysis") !=null) {
//Logger.log('exists');
} else {
//Logger.log('Creating new');
ss.insertSheet("Analysis");
}
var sheetNumber = ss.getSheetByName("Analysis").getIndex() - 1;
ss.getSheetByName("Analysis").clear();
var newsheet = ss.getSheets()[sheetNumber];
var newdata = newsheet.getDataRange().getValues();
newsheet.getRange(1, 1).setValue('Suppliers');
//Get list of suppliers
for (var s = 1; s < data.length; s++) {
var supplier = data[s][3];
var z = 1;
newdata = newsheet.getDataRange().getValues();
for (var r = 1; r < newdata.length;r++) {
if (supplier === newdata[r][0]) {
z = 2;
} else { Logger.log(r);}
}
if (z === 1) {
newsheet.getRange(r+1, 1).setValue(supplier);
} else if ( z > 1 ) { Logge.log('Error');
}
}
列データ[s][3] は、さまざまなジョブのサプライヤーのリストです。1,000点以上の応募があり、合計で約160社のサプライヤーがいます。このスクリプトの実行には約 5 分かかりますが、これは非常に遅く効果的ではありません。
このプロセスを高速化するためにコードを変更するにはどうすればよいですか? NewCategoryFilter からの出力をテーブルに取得する方法はありますか?