我在Google电子表格上有两个onEdit()
函数。但似乎一个功能一次正在运作。
第一个函数是用于为所有行着色的脚本,第二个函数是用于根据列编辑在2个单元格上添加日期的日期函数。
以下是脚本。
function colorAll()
{
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 4;
var endRow = sheet.getLastRow();
for (var r = startRow; r <= endRow; r++) {
colorRow(r);
}
}
SpreadsheetApp.flush();
function colorRow(r)
{
var sheet = SpreadsheetApp.getActiveSheet();
var dataRange = sheet.getRange(r, 1, 1, 32);
var data = dataRange.getValues();
var row = data[0];
SpreadsheetApp.flush();
if(row[14] === ""){
dataRange.setBackgroundRGB(255, 255, 255);
dataRange.setFontColor("#000000");
}
else if(row[14] === "BEING USED") {
dataRange.setBackgroundRGB(150, 185, 255);
dataRange.setFontColor("#004BE1");
}
}
function onEdit(event)
{
var r = event.source.getActiveRange().getRowIndex();
if (r >= 2) {
colorRow(r);
}
}
function onOpen(){
colorAll();
第二个功能。
function onEdit(e) {
var aCell = e.source.getActiveCell(), col = aCell.getColumn();
if(col == 19 || col == 21) {
var adjacentCell = aCell.offset(0, 1);
var newDate = Utilities.formatDate(new Date(),
"GMT+1", "dd/MM/yyyy");
adjacentCell.setValue(newDate);
}
}
日期功能正常,但colorRow
功能不起作用,如果删除日期脚本,则colorRow
将起作用。
任何人都可以指出我正确的方向吗?好像我错过了什么
由于
答案 0 :(得分:3)
巴里史密斯评论&#34;两个同名的职能&#34;是正确的;只有第二个会在那种情况下执行。
您只能拥有一个名为onEdit()
的电子表格函数。如果要将另一个函数用作onEdit
触发器,则需要将其设置为可安装触发器。
您可以使用Resources -> Current Project's Triggers
中的对话框安装第二个触发器。
或者,您可以只有一个onEdit()
个简单触发器,但让它调用&#34;子触发器&#34;函数,将事件对象e
传递给每个函数。
答案 1 :(得分:2)
我可能会误解,但看起来你有两个不同的功能,名称完全相同。这不可能发生,因为第二个基本上覆盖了第一个。给出不同的名称,它应该有用。