私が達成しようとしているのは、列 A の人々のリストからランダムに選択することですが、選択されたら、リストから削除する必要があります。アイデアは、毎週誰かをランダムに選択する名簿を作成することですが、選択されたらその人を削除します(そして、0になると配列を再作成します)
Example
Paul
David
John
Matt
random(A1:A4) を実行すると、David が選択されますが、次に関数を実行すると、配列は A1:A4 から再度構築されるため、David は削除されません。
ピックを追跡するために2番目の列を追加してから、それらを配列から削除しようとしましたが、行ったことを保持せずに配列から1つの値しか削除できませんでした
Example
List of Users Tracking Result (print all values)
Paul John David,Paul,Matt
David John David Paul,Matt
John David Matt Paul,John
Matt Matt David Paul,John
結果はすべての値ではありませんが、私が抱えている論理的な問題を示すためにすべての値を含めました。追跡列では、最初の空白を残して、追跡フィールドの値が結果から取得した値になるようにしました (通常、結果は 1 つの値のみを取得します)..so B2 = C1
これを行う方法についていくつかの指針を得ることができますか。(google-apps-script)
ここでコードを求める人のために、それは
function random(a,b) {
var listPeople = new Array();
for (var i = 0; i < a.length; i++) {
var row = a[i];
for (var j = 0; j < row.length; j++) {
var value = row[j];
if (value) {
listPeople.push(value);
}
}
}
//deleting someone
var trackPeople = listPeople.slice(0);
for (var i = 0; i < trackPeople.length; i++) {
if (trackPeople[i] == b) {
trackPeople.splice(i,1);
}
}
// Returning a persons name
if (trackPeople.length > 0) {
var pick = Math.floor(Math.random() * trackPeople.length);
return trackPeople[pick];
}
}