google-apps-script - 将 =IFS 语句转换为 Google 表格中的脚本
问题描述
在当前的 Google 表格书(在主选项卡上,名为“Master”)中,此公式当前位于 E 列中,从第 3 行开始,一直到工作表的末尾。
=IFS(V3="","",AND(V3<>"", AJ3=""),"Needs Invoice"
,AND(AJ3<>"", AM3=""),"Payment Due",AI3<>AN3,"Partial Payment Due",AI3=AN3,"Paid")
为了清楚起见:
- 如果“V”为空白,“E”也为空白
- 如果“V”不为空且 AJ 为空,则“E”为“需要发票”
- 如果 AJ 不为空且 AM 为空,则“E”为“付款到期”
- 如果 AI 和 AN 都有值且不相等,“E”是“部分付款到期”
- 如果 AI 和 AN 都具有值且相等,则“E”为“付费”
这适用于我需要它做的事情,但我更愿意将此作为脚本来填充 E 列并在编辑 V、AI、AJ、AM 或 AN 列(上述公式中使用的列)时运行。
我不知道如何开始,因为它超出了我的技能水平。任何帮助都会很棒!
解决方案
- 如果“V”为空白,“E”也为空白
- 如果“V”不为空且 AJ 为空,则“E”为“需要发票”
- 如果 AJ 不为空且 AM 为空,则“E”为“付款到期”
- 如果 AI 和 AN 都有值且不相等,“E”是“部分付款到期”
- 如果 AI 和 AN 都具有值且相等,则“E”是“付费”
function ifToScript() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Master');
var rg=sh.getDataRange();
var vA=rg.getValues();
for(var i=0;i<vA.length;i++) {
if(!vA[i][21]) {
vA[i][4]='';
}
if(vA[i][21] && !vA[i][35]) {
vA[i][4]="Needs Invoice";
}
if(vA[i][35] && !vA[i][38]) {
vA[i][4]="Payment Due";
}
if(vA[i][34] && vA[i][39] && vA[i][34]!=vA[i][39]) {
vA[i][4]="Partial Payment Due";
}
if(vA[i][34] && vA[i][39] && vA[i][34]==vA[i][39]) {
vA[i][4]="Paid";
}
}
rg.setValues(vA);
}
尝试以下作为onEdit()
. 注意:vA.length 将始终为 1。
function onEdit(e) {
var ss=e.source;
var rg=e.range;
var sh=e.range.getSheet();
var col=e.range.columnStart;
var row=e.range.rowStart;
var colA=[22,35,36,39,40]
if(sh.getName()!='Master'){return;}
if(colA.indexOf(col)>-1 && sh.getName()=='Master'){
var rg=sh.getRange(e.range.rowStart,1,1,40);
var vA=rg.getValues();
for(var i=0;i<vA.length;i++) {
if(!vA[i][21]) {
vA[i][4]='';
}
if(vA[i][21] && !vA[i][35]) {
vA[i][4]="Needs Invoice";
}
if(vA[i][35] && !vA[i][38]) {
vA[i][4]="Payment Due";
}
if(vA[i][34] && vA[i][39] && vA[i][34]!=vA[i][39]) {
vA[i][4]="Partial Payment Due";
}
if(vA[i][34] && vA[i][39] && vA[i][34]==vA[i][39]) {
vA[i][4]="Paid";
}
}
rg.setValues(vA);
}
}
推荐阅读
- javascript - 我正在将 ytdl-core 用于音乐机器人,并且它一直输出未定义播放
- python-3.x - 动态创建文件夹并将 csv 文件写入该文件夹
- ionic-framework - 改变离子含量离子4的背景而不是内部元素
- python - 如何根据 Python 中的另一个列表对一个列表进行排序?
- html - HTML 文本和 Font Awesome 图标之间的间距
- mysql - 如何在 django 中迁移 mysql 时修复迁移中的错误
- python - 如何从 python 中的完整数据集创建缺失值率(10%、20% 等)
- r - 回归 - 有界因变量 - 模型选择
- ssis - 我们可以在使用 SSIS 包上传多个文件时在 Azure blob 中使用回滚(事务)吗?
- x11 - 如何在没有桌面环境的 CentOS 中使用 dbus