在当前的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列(上述公式中使用的列)上运行。
我不知道如何开始这件事,因为它远远超出了我的技能水平。任何帮助都会很好!
发布于 2019-02-26 21:29:25
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);
}
}https://stackoverflow.com/questions/54892488
复制相似问题