google-apps-script - 如果 Google 脚本中的 AND 语句根据一个单元格中的更改和另一个单元格中的值将数据移动到另一张表
问题描述
好的,我在这方面还很陌生。我有一个谷歌电子表格,我填充然后运行一个脚本来创建表单来完成任务。我的最终用户将任务标记为已完成。我希望电子表格中的条目更改为是并且是验证任务以复制到另一张工作表(日志)。如果我只有一个观察者是的,我可以复制条目,但是在将另一个 if 语句放在那里时遇到问题。这是我的测试...
function onChange() {
// moves a row from any sheet to an archive sheet when a magic value is entered in a column
var columnNumberToWatch = /* column D */ 4; // column A = 1, B = 2, etc.
var valueToWatch = "yes";
var sheetNameToMoveTheRowTo = "LOG";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet2");
var cell = sheet.getActiveCell();
if ( sheet.getName() != sheetNameToMoveTheRowTo && cell.getColumn() == columnNumberToWatch
&& cell.getValue().toLowerCase() == valueToWatch) {
if (cell.getColumn() == 2 && cell.getValue() == "Validate") {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(cell.getRow(), 1, 1, sheet.getLastColumn())
.copyTo(targetRange);
}
}
}
解决方案
看起来您正在尝试使用相同的cell
变量查看两个不同的位置。首先初始化cell
为活动单元格,然后检查列是否为 #4,然后在第二个if
语句中使用cell
2 getColumn
。
也许创建一组新的变量用于验证检查:
var activeRow=cell.getRow();
var valCheck=sheet.getRange(activeRow, 2);
然后if
语句更改为:
if (valCheck.getValue() == "Validate") {
推荐阅读
- azure-devops - VSTS 和 Azure Devops 有什么区别?
- nginx - 根据上游是本地还是远程设置 nginx proxy_pass 方案
- c# - 使用多个连接从 c# 并行执行相同的存储过程,但没有给出良好的响应时间
- c# - 将 nlog 与独立类项目中的扩展一起使用,不起作用(无法加载扩展程序集)
- r - 通过按钮/单击过滤数据表(R Flexdashboard)
- hive - Informatica BDM 字符串数据类型
- database - 使用 mlab,与 Meteor,并部署到 Galaxy:接收错误“未授权”DB“执行命令”
- postgresql - 即使 postgresql 数据库中存在列,在休眠中获取 PK 列的列未找到错误
- html - 从任何地方获取标题下方的段落
- php - GNU Parallel 作为作业队列处理器