在当前的Google表格书(位于主标签上,名为“Master”)中,此公式目前位于E列,从第3行开始,一直到表格的末尾。
=IFS(V3="","",AND(V3<>"", AJ3=""),"Needs Invoice"
,AND(AJ3<>"", AM3=""),"Payment Due",AI3<>AN3,"Partial Payment Due",AI3=AN3,"Paid")
为清楚起见:
这适用于我需要它做的事情,但我更喜欢将此作为填充E列的脚本并运行编辑列V,AI,AJ,AM或AN(上述公式中使用的列)。
我不知道如何开始这项工作,因为它超出了我的技能水平。任何帮助都会很棒!
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);
}
}