【发布时间】:2019-01-04 18:15:33
【问题描述】:
请帮忙!我已经研究了好几个星期,但没有解决方案。
我们使用谷歌表单将数据合并到谷歌表格中。有 2 张表格 - 接受所有表单回复的“INCOMPLETE”和“COMPLETE”。
我能够根据条件“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());
}
}
【问题讨论】:
-
你有这条线
else if (sheet.getName() === sheetNameToWatch2 && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch),我相信它应该是这样else if (sheet.getName() == sheetNameToWatch2 && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch2)我添加了一个工作版本作为答案,我用一些假数据和添加的数据验证对其进行了测试。有时我发现将实际值集成到代码中更容易,因为它更容易为我捕获错误。
标签: google-apps-script google-sheets move delete-row