【发布时间】:2022-01-18 00:42:36
【问题描述】:
我正在尝试为 Google 表格创建一个函数,但对比较运算符和 elseif 格式感到困惑。
该函数指向工作表中的特定单元格,并根据状态值在工作表之间移动范围: Screenshot
我想做以下事情:
如果状态值 = "Pending" - 将范围移动到工作表 ORDERS |活跃
如果状态值 = "In Hand" - 将范围移动到工作表 ORDERS |完成
如果状态值 = "待售" - 将范围移动到工作表 SALES |活跃
如果状态值 = "Sold" - 将范围移动到工作表 SALES |完成
function onEdit(e) {
const src = e.source.getActiveSheet();
const r = e.range;
if (r.columnStart != 2 || r.rowStart == 1 || e.value == ("In Hand"));
const dest = e.source.getSheetByName('ORDERS | Complete');
src.getRange(r.rowStart,1,1,12).moveTo(dest.getRange(dest.getLastRow()+1,1,1,12));
src.deleteRow(r.rowStart);
}
谢谢
编辑 1
我对下面的答案有一些疑问(有效)。
-
这大大减慢了我的工作表 - 这肯定只在编辑指定范围时运行 - 还是在每次编辑工作表上的任何位置后运行(然后检查指定范围是否被编辑)?理想情况下,我希望它仅在列出的 4 个工作表上运行: 订单 |活跃,订单 |完成,销售 |活跃, 销售 |完成
-
使用 get column 和 get row 方法 - 这将确保函数在第 2 列中编辑的每一行上运行(这是我想要的) - 还是只在活动工作表上的第 2 列第 1 行上运行?
【问题讨论】:
-
您想用
r.columnStart和r.rowStart引用什么属性?我相信您想使用r.getColumn()和r.getRow()。 -
你可能是对的,我在教程中发现了这个功能,我正在尝试调整它。我很高兴尝试使用 getColumn 来定位确切的值 - 它是工作表中的单元格 B2。
-
这可能是问题的一部分。不过,您的代码布局似乎还有其他问题,因此我将发布一个答案来更全面地描述这些问题。
-
这太棒了,谢谢!它运行良好。我希望这个函数稍微改变一下,所以我会创建一个新问题。再次感谢:)
标签: google-apps-script google-sheets