現在、Google スプレッドシートを使用して決定マトリックスを設定しており、結果のランキング機能を実装したいと考えています。オプションが4つしかない場合はこれを行いませんが、私の場合は32個のオプションが利用可能です...
私はGoogleスクリプトAPIでこれをやろうとしましたが、結果はちょっと残念です:
function Ranking() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var alldata = sheet.getDataRange().getValues();
var data = [];
var j = 8;
for (var i = 0; i <= 31; i++) {
data [i] = alldata[18][j];
j= j+2;
}
var sorted = data.slice().sort(function(a,b){return b-a});
var ranks = data.slice().map(function(v){return sorted.indexOf(v)+1});
sheet.getRange("I20").setValue(ranks[0]);
sheet.getRange("K20").setValue(ranks[1]);
sheet.getRange("M20").setValue(ranks[2]);
sheet.getRange("O20").setValue(ranks[3]);
sheet.getRange("Q20").setValue(ranks[4]);
sheet.getRange("S20").setValue(ranks[5]);
sheet.getRange("U20").setValue(ranks[6]);
sheet.getRange("W20").setValue(ranks[7]);
sheet.getRange("Y20").setValue(ranks[8]);
sheet.getRange("AA20").setValue(ranks[9]);
sheet.getRange("AC20").setValue(ranks[10]);
sheet.getRange("AE20").setValue(ranks[11]);
sheet.getRange("AG20").setValue(ranks[12]);
sheet.getRange("AI20").setValue(ranks[13]);
sheet.getRange("AK20").setValue(ranks[14]);
sheet.getRange("AM20").setValue(ranks[15]);
sheet.getRange("AO20").setValue(ranks[16]);
sheet.getRange("AQ20").setValue(ranks[17]);
sheet.getRange("AS20").setValue(ranks[18]);
sheet.getRange("AU20").setValue(ranks[19]);
sheet.getRange("AW20").setValue(ranks[20]);
sheet.getRange("AY20").setValue(ranks[21]);
sheet.getRange("BA20").setValue(ranks[22]);
sheet.getRange("BC20").setValue(ranks[23]);
sheet.getRange("BE20").setValue(ranks[24]);
sheet.getRange("BG20").setValue(ranks[25]);
sheet.getRange("BI20").setValue(ranks[26]);
sheet.getRange("BK20").setValue(ranks[27]);
sheet.getRange("BM20").setValue(ranks[28]);
sheet.getRange("BO20").setValue(ranks[29]);
sheet.getRange("BQ20").setValue(ranks[30]);
sheet.getRange("BR20").setValue(ranks[31]);
}
ご覧のとおり、コードは本当にずさんです。それはおそらく、私がこれまで JavaScript を使用したことがなく、コーディングの知識が一般的に非常に基本的であるためです。
スクリプト API を必要とせずに、そのような機能をスプレッドシートに直接実装する方法はありますか?
助けてくれてありがとう!