2016-06-01 33 views
0

私はG「」値「O」「V」を有する3つの水平セルの範囲を持っているGoogleのスクリプトでGoogleのスプレッドシート・スクリプト用アレイ

function gemOMVG(values) { 
    var sum = ""; 

    for (var i = 0; i < values.length; i++) { 
    sum = sum+values[i]; 
    } 

return sum; 
} 

この機能を作りました。私のスクリプトは、kommaによって分離されたo、v、gを返します。 if文を実行できるように、これらの値を配列に入れたいと思います。

誰でも私にこれを助けることができますか?

+0

変数 'values'は' [['o']、['v']、['g']] 'のように二重の配列を持ちます。これは、すべてのマルチセル範囲がカスタム関数にどのように渡るかです。また、それらが配列内にあること(配列内にある)と、if文を実行することとは何を意味するのかは不明です。 –

+0

ありがとう、私はそれを考え出した(以下の答え) – apielotje

答えて

0

私はそれを理解しました。

function gemOMVG(values) { 
    var sum = 0; 

    for (var i = 0; i < values[0].length; i++) { 
    //sum += "-"+values[0][i]; 
    if(values[0][i] == 'o'){sum+= 4.5;} 
    else if (values[0][i] == 'm'){sum+= 5;} 
    else if (values[0][i] == 'v'){sum+= 6.2;} 
    else if(values[0][i] == 'g'){sum+= 8.5;} 
    } 

    var gem = sum/values[0].length; 

    var array = [4.5, 5, 6.2, 8.5]; 

function closest(arr, closestTo){ 

    var closest = Math.max.apply(null, arr); //Get the highest number in arr in case it match nothing. 

    for(var i = 0; i < arr.length; i++){ //Loop the array 
     if(arr[i] >= closestTo && arr[i] < closest) closest = arr[i]; //Check if it's higher than your number, but lower than your closest value 
    } 

    return closest; // return the value 
} 

var roundgem = closest(array, gem); 
    if(roundgem == 4.5){return "o";} 
    else if(roundgem == 5){return "m";} 
    else if(roundgem == 6.2){return "v";} 
    else if(roundgem == 8.5){return "g";} 
} 
関連する問題