Google 脚本复制粘贴

Google Script copy paste

现在它会覆盖日志中的相同单元格 我需要它写入下一个单元格而不是覆盖同一个单元格。 https://freeimage.host/I/5GIOjs 我想在 Sheet 名为 Logs 的列 A 中搜索 D3=Lumee,您会看到所有名称。想要它共同复制 J12 到特定名称 https://freeimage.host/i/5GTLJI

function myFunction() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getActiveSheet();
  var j12 = s.getRange('J12').getValues();

  var dynamic_cell = s.getRange('D3').getValue();

  var target_s = ss.getSheetByName('Logs');

  for (var i = 2; i<=target_s.getMaxRows();i++){
    var match = target_s.getRange(i, 1).getValue();
    if(dynamic_cell == match){
      var targetrange = target_s.getRange(i,2,1);
      break;
    }
  }

  targetrange.setValues(j12);

}

我就是这样做的。

 function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sh = ss.getActiveSheet();
  const j12 = sh.getRange('J12').getValue();
  const d3 = sh.getRange('D3').getValue();
  const tsh = ss.getSheetByName('Logs');
  const vs = tsh.getRange(2,1,tsh.getLastRow() -1).getValues();
  for( let i = 0;i<vs.length; i++) {
    if(d3 == vs[i][0]){
      tsh.getRange(i + 2,2).setValue(j12);
      break;
    }
  }
}

这比在每个循环中拉出匹配值要快得多。这样我一次就得到了所有这些并且循环 运行 快得多。

演示:

版本 2:

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sh = ss.getSheetByName('Sheet0');
  const j12 = sh.getRange('J12').getValue();
  const d3 = sh.getRange('D3').getValue();
  const tsh = ss.getSheetByName('Logs');
  const vs = tsh.getRange(2, 1, tsh.getLastRow() - 1).getValues();
  for (let i = 0; i < vs.length; i++) {
    if (d3 == vs[i][0]) {
      tsh.getRange(i + 2, getRowWidth(i + 2, tsh, ss) + 1).setValue(j12);
      break;
    }
  }
}

辅助函数:

function getRowWidth(row, sh, ss) {
  var ss = ss || SpreadsheetApp.getActive();
  var sh = sh || ss.getActiveSheet();
  var row = row || sh.getActiveCell().getRow();
  var rcA = [];
  if(sh.getLastColumn()){rcA = sh.getRange(row, 1, 1, sh.getLastColumn()).getValues().flat().reverse();}
  let s = 0;
  for (let i = 0; i < rcA.length; i++) {
    if (rcA[i].toString().length == 0) {
      s++;
    } else {[![enter image description here][2]][2]
      break;
    }
  }
  return rcA.length - s;
}

演示: