我有多个函数,每当选中复选框时,列就会随机化。第一个函数(D1A)对第一个复选框有效,但是当我为第二个复选框输入第二个函数(D2A)时,两个函数都停止工作。我做错了什么?
这里有2个功能:
`'function D1A() {
const ss = SpreadsheetApp.getActive();
const sheet = ss.getSheetByName('Copy of 1-12-2025 - 1-18-2025');
const originalValues = sheet.getRange('J5:K6').getValues();
var transposedValues = originalValues[0].map((col, i) => originalValues.map(row => row[i]));
var randomizedValues = transposedValues.map(x=>x.sort((a, b) => 0.5 - Math.random()));
var output = randomizedValues[0].map((col, i) => randomizedValues.map(row => row[i]));
sheet.getRange('J8:K9').setValues(output);
}
'function onEdit(e) {
if (e.value == 'D1A') D1A()
}`
`'function D2A() {
const ss = SpreadsheetApp.getActive();
const sheet = ss.getSheetByName('Copy of 1-12-2025 - 1-18-2025');
const originalValues = sheet.getRange('M5:N7').getValues();
var transposedValues = originalValues[0].map((col, i) => originalValues.map(row => row[i]));
var randomizedValues = transposedValues.map(x=>x.sort((a, b) => 0.5 - Math.random()));
var output = randomizedValues[0].map((col, i) => randomizedValues.map(row => row[i]));
sheet.getRange('M9:N11').setValues(output);
}
'function onEdit(e) {
if (e.value == 'D2A') D2A()
}`
问题的根本原因是,在 Google Apps 脚本中,1 个脚本中不能有 2 个同名的函数。解决这个问题,您可以在这个项目和您未来的项目中尝试这种方法。
编辑代码
function onEdit(e) {
if (e.value == 'D1A'){
D1A();
}
else if(e.value == 'D2A'){
D2A();
}
}
function D1A()
{
const ss = SpreadsheetApp.getActive();
const sheet = ss.getSheetByName('Copy of 1-12-2025 - 1-18-2025');
const originalValues = sheet.getRange('J5:K6').getValues();
var transposedValues = originalValues[0].map((col, i) => originalValues.map(row => row[i]));
var randomizedValues = transposedValues.map(x=>x.sort((a, b) => 0.5 - Math.random()));
var output = randomizedValues[0].map((col, i) => randomizedValues.map(row => row[i]));
sheet.getRange('J8:K9').setValues(output);
}
function D2A() {
const ss = SpreadsheetApp.getActive();
const sheet = ss.getSheetByName('Copy of 1-12-2025 - 1-18-2025');
const originalValues = sheet.getRange('M5:N7').getValues();
var transposedValues = originalValues[0].map((col, i) => originalValues.map(row => row[i]));
var randomizedValues = transposedValues.map(x=>x.sort((a, b) => 0.5 - Math.random()));
var output = randomizedValues[0].map((col, i) => randomizedValues.map(row => row[i]));
sheet.getRange('M9:N11').setValues(output);
}