【发布时间】:2020-02-12 07:05:30
【问题描述】:
如果 C 为 4,我想使用谷歌应用脚本随机化 D:E、F:G、H:I、J:K。
目前我使用这个低效且耗时的代码:
function shuffleAnswers() {
var arr = [0, 2, 4, 6];
for (var i = 2; i < lastRow()+1; i++)
{
var amount = sheet().getRange(i,3).getValue();
if (amount == 4)
{
var source = sheet().getRange(i,4,1,2);
var column = 4 + arr[(Math.random() * arr.length) | 0];
var destination = sheet().getRange(i,column,1,2);
var valuesSource = source.getValues();
var valuesDestination = destination.getValues();
source.setValues(valuesDestination);
destination.setValues(valuesSource);
}
}
arr = [-2, 0, 2, 4];
for (var i = 2; i < lastRow()+1; i++)
{
var amount = sheet().getRange(i,3).getValue();
if (amount == 4)
{
var source = sheet().getRange(i,6,1,2);
var column = 6 + arr[(Math.random() * arr.length) | 0];
var destination = sheet().getRange(i,column,1,2);
var valuesSource = source.getValues();
var valuesDestination = destination.getValues();
source.setValues(valuesDestination);
destination.setValues(valuesSource);
}
}
arr = [-4, -2, 0, 2];
for (var i = 2; i < lastRow()+1; i++)
{
var amount = sheet().getRange(i,3).getValue();
if (amount == 4)
{
var source = sheet().getRange(i,8,1,2);
var column = 8 + arr[(Math.random() * arr.length) | 0];
var destination = sheet().getRange(i,column,1,2);
var valuesSource = source.getValues();
var valuesDestination = destination.getValues();
source.setValues(valuesDestination);
destination.setValues(valuesSource);
}
}
arr = [-6, -4, -2, 0];
for (var i = 2; i < lastRow()+1; i++)
{
var amount = sheet().getRange(i,3).getValue();
if (amount == 4)
{
var source = sheet().getRange(i,10,1,2);
var column = 10 + arr[(Math.random() * arr.length) | 0];
var destination = sheet().getRange(i,column,1,2);
var valuesSource = source.getValues();
var valuesDestination = destination.getValues();
source.setValues(valuesDestination);
destination.setValues(valuesSource);
}
}
}
你有什么想法吗?也许使用 range.randomize()? C=4 的每一行都应该是随机的。多行的列不应更改为相同的位置。
【问题讨论】:
-
水平随机化对吗?你能显示随机输出吗?
-
@TheMaster 如果我的理解是正确的,当我看到 OP 脚本的第一部分时,似乎“D2:E”列的行是随机的。每行中的列“D”和“E”不是随机的。我认为 OP 想反映到“D2:E”、“F2:G”、“H2:I”和“J2:K”。但如果我的理解不正确,我深表歉意。
-
@TheMaster 而且,当“C”列是
4时,OP 似乎想要随机化。我现在注意到了。请注意这一点。 -
@Tanaike 谢谢。操作也得到澄清。
-
@TheMaster 感谢您的回复。我注意到我的理解不正确。似乎水平箭头可能是水平随机化的。我为此道歉。我想尝试看看 OP 目标的愿景。我认为这是一个有趣的问题。
标签: google-apps-script google-sheets-api google-apps-script-addon