首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将=IFS语句转换为Google中的脚本

将=IFS语句转换为Google中的脚本
EN

Stack Overflow用户
提问于 2019-02-26 19:10:05
回答 1查看 764关注 0票数 0

在当前的Google手册中(在主选项卡上,名为"Master"),这个公式目前位于E列中,从第3行开始,一直到页的末尾。

代码语言:javascript
复制
=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和a都有值且不相等,则"E“是”部分付款“
  • 如果AI和a都有值且相等,则"E“是”支付“

这适用于我需要它做的事情,但我更愿意把它作为一个脚本来填充E列,并在编辑第V、AI、AJ、AM或AN列(上述公式中使用的列)上运行。

我不知道如何开始这件事,因为它远远超出了我的技能水平。任何帮助都会很好!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-26 21:29:25

  • 如果"V“为空白,则"E”也为空白
  • 如果"V“不是空白,而AJ是空白,则"E”是“需要发票”
  • 如果AJ不是空白,AM是空白,则"E“是”到期付款“
  • 如果AI和a都有值且不相等,则"E“是”部分付款“
  • 如果AI和a都有值且相等,则"E“是”支付“
代码语言:javascript
复制
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。

代码语言:javascript
复制
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);
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54892488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档