好的,我在这里有一些代码,我觉得应该可行,但不是。我想要它,以便如果任何工作表的第一列具有状态"完成"它推动了'#34;已完成的任务"片。但由于某种原因,它不起作用。我不确定它是否是一个语法问题。
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if((s.getName() == "Beau" || "Derek" || "Jay" || "Steven" || "Terence" || "Victor") && r.getColumn() == 1 && r.getValue() == "Complete") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Completed Tasks");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
这是我工作表的链接。正如你在" Beau"表格中有一些信息,但它没有把它推到任何地方。
https://docs.google.com/spreadsheets/d/1_HQJ2UK6R3QTLY9oeVe-PIaZngPN1luQAz633taE4Oo/edit?usp=sharing
我也希望这样,如果信息被输入前面"待办事项"表,它检查"分配给"单元格并将其推送到正确的人员表。之前我们把它简单得多了,但是把它分离出来让它变得非常复杂(我的经验很少)
谢谢!
答案 0 :(得分:1)
看看是否有效(首先禁用当前的onEdit):
function onEdit(e) {
var ss = e.source,
s = ss.getActiveSheet(),
sheets = ["Beau", "Derek", "Jay", "Steven", "Terence", "Victor"];
if (sheets.indexOf(s.getName()) === -1 || e.range.columnStart !== 1 || e.value !== 'Complete') return;
ss.getSheetByName('Complete Tasks')
.appendRow(e.range.offset(0, 0, 1, 7)
.getValues()[0])
s.deleteRow(e.range.rowStart);
}
答案 1 :(得分:0)
我从未见过语法s.getName() == "Beau" || "Derek" || "Jay" || "Steven" || "Terence" || "Victor"
而且显然它不起作用,如果您记录上述内容,它将始终返回" Derek",第二个名称。要克服这个问题,请创建一个带有名称的对象/数组,并检查它们是否存在名称。
例如
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet(),
s = event.source.getActiveSheet(),
r = event.source.getActiveRange(),
allowed = {"Beau" : 1 , "Derek" : 1 , "Jay" : 1 , "Steven" : 1 , "Terence" : 1 , "Victor" : 1};
if( allowed[ s.getName() ] && r.getColumn() == 1 && r.getValue() == "Complete") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Completed Tasks");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
答案 2 :(得分:0)
s.getName() == "Beau" || "Derek" || "Jay" || "Steven" || "Terence" || "Victor"
赢了工作。你必须使用:
s.getName() == "Beau" || s.getName() == "Derek" || s.getName() == "Jay" || s.getName() == "Steven" || s.getName() == "Terence" || s.getName() == "Victor"
但是,没有理由一遍又一遍地使用getName()
方法。创建一个变量:
var nameToCheck = s.getName();
Logger.log('the name is: ' + nameToCheck);
if (nameToCheck == "Beau" || nameToCheck === "Derek" || nameToCheck === "Jay" || nameToCheck === "Steven" || nameToCheck === "Terence" || nameToCheck === "Victor")