Luk*_*man 5 javascript google-sheets
有点口吃......我目前正在使用下面的脚本在单元格 I6:M6 中生成 1 到 200 之间的随机数。对于我的预期目的,这个脚本有两个问题(都不是主要的,但我想要一些“抛光”。
问题 1) 不互斥。这是最大的问题,因为五个数字中的每一个都必须是唯一的。它们不太可能被重复,但是当它发生时有点烦人。
问题 2)我完全不知道如何或是否可能生成这些随机数,然后按数字顺序放入 I6:M6,I6 是最小的。
我是一个完全的业余爱好者和 JavaScript(以及任何其他代码),我只是设法从我在其他地方找到的信息拼凑起来,但我对它的工作原理有一个非常模糊的理解。
///////////////////////////////////////
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [ {name:"Roll Dice",functionName:"rollDice"} ];
sheet.addMenu("Script", entries);
};
function rollDice() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("sheet1 (New)");
var cell = sheet.getRange("I6");
cell.setValue( Math.floor((Math.random()*200)+1) );
var cell = sheet.getRange("J6");
cell.setValue( Math.floor((Math.random()*200)+1) );
var cell = sheet.getRange("K6");
cell.setValue( Math.floor((Math.random()*200)+1) );
var cell = sheet.getRange("L6");
cell.setValue( Math.floor((Math.random()*200)+1) );
var cell = sheet.getRange("M6");
cell.setValue( Math.floor((Math.random()*200)+1) );
};
///////////////////////////////////////
Run Code Online (Sandbox Code Playgroud)
我在 mainLoop 函数中添加了一个排序函数,现在应该按数字排序。
function myFunction() {
mainLoop()
}
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("sheet1");
function generateNumber(){
return Math.floor((Math.random()*200)+1)
}
function setValue(_val, _address){
var cell = sheet.getRange(_address)
cell.setValue(_val)
}
function generate(){
var array = []
while(array.length<5){
var rand = generateNumber()
var isUnique = array.indexOf(rand) === -1
if(isUnique){
array.push(generateNumber())
}
}
return array
}
function mainLoop(){
var array = generate()
array.sort(function(a, b) {
return a - b;
});
var addresses = ['I6','J6','K6','L6','M6']
addresses.forEach(function (_address,_index){
setValue(array[_index],_address)
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
245 次 |
| 最近记录: |