【问题标题】:How do I use Google Script If Statements?如何使用 Google Script If 语句?
【发布时间】:2021-10-31 05:33:40
【问题描述】:

我熟悉 Excel VBA,但不熟悉 Google 脚本编辑

如果单元格 A2 和 B2 不是空白,我正在尝试使用简单的 IF 语句在第 2 行上方插入新行。

  function AddaLine() {
if (B1 == false)
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('2:2').activate();
  spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
  spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
  spreadsheet.getRange('A2').activate();
};

单元格 B1 包含的位置

=isblank(A2:B2)

function AddaLine() {
  if (A2, B2 != null)
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('2:2').activate();
  spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
  spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
  spreadsheet.getRange('A2').activate();
};

我能想到的每个组合都会返回错误。 任何帮助将不胜感激。

【问题讨论】:

    标签: javascript if-statement google-apps-script google-sheets


    【解决方案1】:

    我相信你的目标如下。

    • 来自I am trying to use a simple IF statement to insert a new line above line 2 if cells A2 & B2 are NOT Blank.,当单元格“A2”和“B2”不为空时,您想在第 2 行插入新行。

    这样的话,下面的修改怎么样?

    修改脚本:

    function AddaLine() {
      var spreadsheet = SpreadsheetApp.getActive();
      var [a2, b2] = spreadsheet.getActiveSheet().getRange("A2:B2").getDisplayValues()[0];
      if (a2 != "" && b2 != "") {
        spreadsheet.getRange('2:2').activate();
        spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
        spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
        spreadsheet.getRange('A2').activate();
      }
    }
    

    或者,比如作为一个简单的脚本,下面的修改怎么样?

    function AddaLine() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var [a2, b2] = sheet.getRange("A2:B2").getDisplayValues()[0];
      if (a2 != "" && b2 != "") {
        sheet.insertRowBefore(2);
      }
    }
    
    • 为了检查单元格“A2”和“B2”是否不为空,我比较了从单元格中检索到的值。

    注意:

    • 作为Rubén's comment 建议的附加信息,在您的脚本中,您使用以下脚本。

        if (A2, B2 != null)
        var spreadsheet = SpreadsheetApp.getActive();
        spreadsheet.getRange('2:2').activate();
      

      在这种情况下,当条件为true时,只运行var spreadsheet = SpreadsheetApp.getActive();这一行。当你想使用if (A2, B2 != null)下面的脚本时,请用{}括起来。 Ref

    【讨论】:

    • 由于 OP 不熟悉 Google Apps Script / JavaScript,因此在 if 语句中强调 {} 的使用以及与自动行终止相关的问题可能很重要。
    【解决方案2】:

    而是出于教育目的。如果要检查数组的所有元素,可以使用every() 方法:

    function AddaLine() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var data = sheet.getRange("A2:B2").getDisplayValues().flat(); 
      if (data.every(x => x != '')) sheet.insertRowBefore(2);
    }
    

    或者,在您的情况下,您可以使用some() 检查某些元素是否为空:

    function AddaLine() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var data = sheet.getRange("A2:B2").getDisplayValues().flat();
      if (data.some(x => x == '')) return; // do nothing if there is an empty cell
      sheet.insertRowBefore(2);
    }
    

    somme() 可能会更高效一些,因为它不需要检查数组的所有元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多