google-apps-script - 谷歌表格移动行多个条件
问题描述
我目前有一个工作功能,当一列标记为 TRUE 时,它从一张表(活动订单)中取出一行并将其移动到另一张表(需要输入)。这是代码:
function moverow(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Active Orders" && r.getColumn() == 23 && r.getValue() == 1)
{
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Needs Entered");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
现在,如果第 23 列标记为 TRUE,则该行将移至“需要输入”表。我希望这更聪明一点,如果第 23 列标记为 TRUE 并且第 19 列 =“已取消”,则该行将移至“已取消”工作表,否则代码继续正常将该行移至“需要输入”床单。我不确定如何更改当前的 IF 语句以检查多个条件,然后如果不满足新的 IF 语句,如何添加 else 语句以正常继续代码。
只是还没有完全解决这一切,尝试了一些我认为可行的方法,但最终却破坏了一些东西。
解决方案
尝试这个:
function moverow(e) {
const sh=r.range.getSheet();
if(sh.getName()=="Active Orders") {
if(sh.getRange(e.range.rowStart,23).getValue()=='TRUE' && sh.getRange(e.range.rowStart,19)!='Canceled') {
let tsh=e.source.getSheetByName('NeedsEntered');
let vs=sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).getValues();
tsh.getRange(tsh.getLastRow()+1,1,1,vs[0].length).setValues(vs);
sh.deleteRow(e.range.rowStart);
}
if(sh.getRange(e.range.rowStart,23).getValue()=='TRUE' && sh.getRange(e.range.rowStart,19)=='Canceled') {
let tsh=e.source.getSheetByName('Canceled');
let vs=sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).getValues();
tsh.getRange(tsh.getLastRow()+1,1,1,vs[0].length).setValues(vs);
sh.deleteRow(e.range.rowStart);
}
}
}
推荐阅读
- r - 计算两个 posixCT 日期之间因子变量的出现次数
- javascript - 从列出/关联经过身份验证的用户的 MongoDB 文档中获取对象
- java - 如何将普通pdf转换为小册子pdf,反之亦然
- sqlite - 使用 SchemaSpy 为本地 sqlite 数据库生成架构时出现连接失败警告
- c# - 在 C# 中对列表中的每个输入执行计算
- javascript - 数组返回长度为 0,尽管它有值
- node.js - 为什么将请求正文内容设为空?
- hyperledger-fabric - 在 IBM Blockchain Platform Visual Studio Extension 上打包智能合约时出错
- python - Python:从更大的列表中填充列表的空列表
- java - java中的包 - 必要吗?