如何在电子表格应用程序脚本中将这两个代码合并为一个?
How can I combine those two code as one in spreadsheet apps script?
function onEdit(e) {
const sheetNames = ["sheet1","sheet2", "sheet3"];
const sheet = e.source.getActiveSheet();
if (sheetNames.includes(sheet.getName()) && e.range.columnStart === 17) {
const offset = e.range.offset(0,3)
if (!offset.getValue()) {
offset.setValue(new Date()).setNumberFormat("YY/MM/dd HH:mm:ss")
}
}
}
和
function onEdit(e) {
const sheetNames = ["sheet A","sheet B", "sheet C"];
const sheet = e.source.getActiveSheet();
if (sheetNames.includes(sheet.getName()) && e.range.columnStart === 1) {
const offset = e.range.offset(0,19)
if (!offset.getValue()) {
offset.setValue(new Date()).setNumberFormat("YY/MM/dd HH:mm:ss")
}
}
}
我将这两个代码应用于两个不同的点差sheet,但现在我需要将它们合并为一个。我对此一无所知。所以我需要你们帮我解决它。
有 3 个不同之处。这是我想放置 sign 的地方,放置 get consquence 以及应用它们的 sheets。
所以我希望 sheet 1,2,3 和 sheet A,B,C 独立工作,但仍然在相同的分布中工作sheet。
请告诉我该怎么做。谢谢
在您的脚本中,如何将它们合并为一个脚本,如下所示?
修改后的脚本:
function onEdit(e) {
const sheetNames1 = ["sheet1", "sheet2", "sheet3"];
const column1 = 17;
const offset1 = [0, 3];
const sheetNames2 = ["sheet A", "sheet B", "sheet C"];
const column2 = 1;
const offset2 = [0, 19];
const obj = sheetNames1.reduce((o, s) => (o[s] = { column: column1, offset: offset1 }, o), {});
sheetNames2.forEach(s => obj[s] = { column: column2, offset: offset2 });
const sheet = e.source.getActiveSheet();
const sheetName = sheet.getName();
if (obj[sheetName] && e.range.columnStart === obj[sheetName].column) {
const offset = e.range.offset(...obj[sheetName].offset);
if (!offset.getValue()) {
offset.setValue(new Date()).setNumberFormat("YY/MM/dd HH:mm:ss");
}
}
}
- 在此修改中,第一个和第二个脚本的每个参数都放在一个对象中。并使用创建的对象,脚本是运行。由此,我认为条件的可扩展性可能很简单。
function onEdit(e) {
const sheetNames = ["sheet1","sheet2", "sheet3"];
const sheet = e.source.getActiveSheet();
if (sheetNames.includes(sheet.getName()) && e.range.columnStart === 17) {
const offset = e.range.offset(0,3)
if (!offset.getValue()) {
offset.setValue(new Date()).setNumberFormat("YY/MM/dd HH:mm:ss")
}
}
}
和
function onEdit(e) {
const sheetNames = ["sheet A","sheet B", "sheet C"];
const sheet = e.source.getActiveSheet();
if (sheetNames.includes(sheet.getName()) && e.range.columnStart === 1) {
const offset = e.range.offset(0,19)
if (!offset.getValue()) {
offset.setValue(new Date()).setNumberFormat("YY/MM/dd HH:mm:ss")
}
}
}
我将这两个代码应用于两个不同的点差sheet,但现在我需要将它们合并为一个。我对此一无所知。所以我需要你们帮我解决它。
有 3 个不同之处。这是我想放置 sign 的地方,放置 get consquence 以及应用它们的 sheets。
所以我希望 sheet 1,2,3 和 sheet A,B,C 独立工作,但仍然在相同的分布中工作sheet。
请告诉我该怎么做。谢谢
在您的脚本中,如何将它们合并为一个脚本,如下所示?
修改后的脚本:
function onEdit(e) {
const sheetNames1 = ["sheet1", "sheet2", "sheet3"];
const column1 = 17;
const offset1 = [0, 3];
const sheetNames2 = ["sheet A", "sheet B", "sheet C"];
const column2 = 1;
const offset2 = [0, 19];
const obj = sheetNames1.reduce((o, s) => (o[s] = { column: column1, offset: offset1 }, o), {});
sheetNames2.forEach(s => obj[s] = { column: column2, offset: offset2 });
const sheet = e.source.getActiveSheet();
const sheetName = sheet.getName();
if (obj[sheetName] && e.range.columnStart === obj[sheetName].column) {
const offset = e.range.offset(...obj[sheetName].offset);
if (!offset.getValue()) {
offset.setValue(new Date()).setNumberFormat("YY/MM/dd HH:mm:ss");
}
}
}
- 在此修改中,第一个和第二个脚本的每个参数都放在一个对象中。并使用创建的对象,脚本是运行。由此,我认为条件的可扩展性可能很简单。