如何更改此脚本以添加其他条件

时间:2019-07-27 08:37:33

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

我有一段这段代码对我来说非常有用,但是,我需要对其进行一些改动,并且不知道如何进行。

我希望添加“多次使用”作为另一个条件,并在“是”旁边加上onEdit()才能起作用。

function numberToLetter(number){
  // converts the column number to a letter
  var temp = "";
  var letter = "";
  while (number > 0){
    temp = (number - 1) % 26;
    letter = String.fromCharCode(temp + 65) + letter;
    number = (number - temp - 1) / 26;
  }
  return letter;
}

function obtainFirstBlankRow() {  

  var sheet = SpreadsheetApp.getActive().getSheetByName('Aug2019');
  // search for first blank row
  var col = sheet.getRange('A:A');
  var vals = col.getValues();
  var count = 0;

  while (vals[count][0] != "") {
    count++;
  }
  return count + 1;
}

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSheet();

  if (ss.getName() == 'ProspectiveSites' && e.range.getColumn() == 26) {

    if (e.range.getValue() != 'Yes'){
      Logger.log('test');
      return;
    }

    var sourceSheet = SpreadsheetApp.getActive().getSheetByName('ProspectiveSites');
    var targetSheet = SpreadsheetApp.getActive().getSheetByName('Aug2019');

    //Logger.log('O' + e.getRow() + ':O' + e.getRow());
    Logger.log(e);
    Logger.log(e.range.getValue());
    var cell15 = sourceSheet.getRange('O' + e.range.getRow() + ':O' + e.range.getRow()).getValue();
    var cell24 = sourceSheet.getRange('X' + e.range.getRow() + ':X' + e.range.getRow()).getValue();
    Logger.log(cell15);
    Logger.log(cell24);

    var row = obtainFirstBlankRow();    
    targetSheet.getRange(row, 1).setValue(cell15);
    targetSheet.getRange(row, 2).setValue(cell24);
  }
}

1 个答案:

答案 0 :(得分:0)

解决方案

是什么阻止您为if语句添加其他条件?请花一些时间研究JS文档,从长远来看,它将对您有很大帮助(请参阅示例后的有用链接)。

修改

此修改假设如果值不等于“多次使用”且不等于“是” ,则需要退出。另外,请注意,出于优化目的还做了一些其他更改(我也将所有比较运算符也更改为严格)。

样品

/**
 * onEdit simple trigger;
 * @param {Object} event object;
 */
function onEdit(e) {
  var ss   = SpreadsheetApp.getActiveSpreadsheet();
  var actS = ss.getActiveSheet(); //active sheet === source sheet;

  //access event object params;
  var range  = e.range;
  var row    = range.getRow();
  var column = range.getColumn();
  var value  = range.getValue();

  if (actS.getName()==='ProspectiveSites' && column===26) {

    if (value!=='Yes'&&value!=='Multiple Use') {
      Logger.log('test');
      return;
    }

    var augS = ss.getSheetByName('Aug2019'); //target sheet;

    var cell15val = actS.getRange('O'+row+':O'+row).getValue();
    var cell24val = actS.getRange('X'+row+':X'+row).getValue();

    var rowBlank = obtainFirstBlankRow();
    var target = augS.getRange(rowBlank,1,1,2); //idx, first col, 1 row, 2 cols;
        target.setValues([[ cell15val , cell24val ]]);
  }
}

有用的链接

    在MDN上的
  1. if..else语句reference
  2. MDN上的比较运算符reference
  3. getRange()方法reference;
  4. setValues()方法reference;