在工作表中的任意位置添加新行时,如何使用Apps脚本基于其他单元格设置单元格的值

时间:2019-11-20 10:16:26

标签: google-apps-script

每当在电子表格的任何地方插入新行时,我都尝试使用Apps Script更新单元格,并且该值取决于在该行的其他列中输入的内容。我已经尝试过getActiveRange,但它只返回第一行。到目前为止,这就是我所拥有的。任何帮助深表感谢!

function SetOwner() {
  var gifLastRow = GIF_SHEET.getLastRow();
  var gifNumRows = gifLastRow - START_ROW + 1;   // Number of rows to process (accounting for Zero index)
  // Fetch the range of cells starting at A2
  var gifRange = GIF_SHEET.getRange(START_ROW, 1, gifNumRows, 19); 
  // Fetch values for each row in the Range.
  var gifData = gifRange.getValues();
  var rownum = gifRange.getRow();

 for (var i = 0; i < gifData.length; i++) {
    var row = gifData[i];
   var mowner = "=vlookup(B:B,Config!A$1:B$10,2,false)"//This is the VLOOKUP for Team A!
   var cowner = "=vlookup(B:B,Config!E$1:F$10,2,false)"//This is the VLOOKUP for Team B!
    if (row[13] == "Team A") {  //check if created by team a
      GIF_SHEET.getRange(rownum, 17).setValue(mowner);
    } else if (row[13] == "Team B") { //check if created by team b
       GIF_SHEET.getRange(rownum, 17).setValue(cowner);
 }
}
}

2 个答案:

答案 0 :(得分:2)

此函数将返回您进行更改的范围。基本上,如果您编辑单元格A10,脚本将返回范围A10。

function onEdit(e){
  var cell = e.range;
  Logger.log(cell.getA1Notation());

  return cell;
}

文档:https://developers.google.com/apps-script/guides/triggers#onedite

enter image description here

enter image description here

答案 1 :(得分:0)

多亏了Juan,我得以将其扩展:

  function onEdit(e){
  var cell = e.range; //Get cell that was edited
  Logger.log(cell.getA1Notation());//Confirm cell
  Logger.log(cell.getRowIndex()); //Confirm row
  var row = cell.getRowIndex(); //Get row number

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Name of Sheet');
  var range = sheet.getRange(row,14); //Get the Created By column for the edited row
  var value = range.getValues(); // Get the value in Created By

  var aowner = "=vlookup(B:B,Config!A$1:B$10,2,false)"; //Look up owner for team A
  var bowner = "=vlookup(B:B,Config!E$1:F$11,2,false)"; //Look up owner for team B


  if (value [0] == "Team A") { //check if created by team A
    sheet.getRange(row,17).setValue(bowner); //set owner to Team B contact
  } else if (value [0] == "Team B") {  //check if created by team B
    sheet.getRange(row,17).setValue(aowner); //set owner to Team A contact
  }

}