请帮助!我已经研究了好几个星期了,没有解决方案。
我们使用Google表单将数据合并到Google表格中。有2张纸-“不完整”接受所有表单响应,“不完整”。
基于条件“ COMPLETE”,我可以从工作表名称“ INCOMPLETE”移动到工作表名称“ COMPLETE”。
我需要以下方面的帮助: (1)我无法终生找到一个脚本,如果有人不小心选中了“ COMPLETE”,该脚本将使它反向,因此将其移回“ INCOMPLETE”表并按时间戳进行排序。
(2)如果可能的话,我还希望另一列显示每次对该特定行进行更新时的时间戳。
(3)如果可能的话,如果残缺不全超过2天(从原始时间戳记起),请向订购者发送一封提醒电子邮件。
这是我到目前为止拥有的脚本:
function onChange() {
// moves a row from a sheet to another when a magic value is entered in a column
// adjust the following variables to fit your needs
// see https://productforums.google.com/d/topic/docs/ehoCZjFPBao/discussion
var sheetNameToWatch = "INCOMPLETE";
var sheetNameToWatch2 = "COMPLETE";
var columnNumberToWatch = 7; // column A = 1, B = 2, etc.
var valueToWatch = "COMPLETE";
var valueToWatch2 = "INCOMPLETE";
var sheetNameToMoveTheRowTo = "COMPLETE";
var sheetNameToMoveTheRowTo2 = "INCOMPLETE";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).copyTo(targetRange);
sheet.deleteRow(range.getRow());
} else if (sheet.getName() === sheetNameToWatch2 && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo2);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).copyTo(targetRange);
sheet.deleteRow(range.getRow());
}
}
答案 0 :(得分:0)
在测试过程中,我发现了上面作为评论留下的错误。我还想尽快将返回值添加到其他工作表中,以使代码尽快返回到不需要的工作表上。
function onChange() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getActiveRange();
Logger.log('Head: Sheet: %s Range: %s col: %s row: %s value: %s',sh.getName(),rg.getA1Notation(),rg.getColumn(),rg.getRow(),rg.getValue());
if(sh.getName()=='INCOMPLETE' || sh.getName()=='COMPLETE'){
if(sh.getName()=='INCOMPLETE' && rg.getColumn()==7 && rg.getValue()=='COMPLETE') {
var tsh=ss.getSheetByName('COMPLETE');
var trg=tsh.getRange(tsh.getLastRow() + 1, 1);
sh.getRange(rg.getRow(), 1, 1, sh.getLastColumn()).copyTo(trg);
sh.deleteRow(rg.getRow());
Logger.log('Top: Sheet: %s Range: %s col: %s row: %s',sh.getName(),rg.getA1Notation(),rg.getColumn(),rg.getRow());
}
if (sh.getName()=='COMPLETE' && rg.getColumn()==7 && rg.getValue()=='INCOMPLETE') {
var tsh=ss.getSheetByName('INCOMPLETE');
var trg=tsh.getRange(tsh.getLastRow() + 1, 1);
sh.getRange(rg.getRow(), 1, 1, sh.getLastColumn()).copyTo(trg);
sh.deleteRow(rg.getRow());
Logger.log('Bot: Sheet: %s Range: %s col: %s row: %s',sh.getName(),rg.getA1Notation(),rg.getColumn(),rg.getRow());
}
}else{
return;//quick return for other sheets
}
}