Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如果在Google应用程序脚本/工作表中一次粘贴/复制多行,如何让OnEdit工作?_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 如果在Google应用程序脚本/工作表中一次粘贴/复制多行,如何让OnEdit工作?

Google apps script 如果在Google应用程序脚本/工作表中一次粘贴/复制多行,如何让OnEdit工作?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个谷歌应用程序脚本,当在第20列(T)中输入值时,它会进行查找。我的问题是,如果我将多行值复制并粘贴到第20(t)列中,脚本将无法工作。我如何调整我的脚本,使其能够与多行复制和粘贴一起工作 function onEdit(e){ let ss = SpreadsheetApp let activeSheet = ss.getActive().getActiveSheet() let lookupSheet = ss.getActive().getSheetByName("Work

我有一个谷歌应用程序脚本,当在第20列(T)中输入值时,它会进行查找。我的问题是,如果我将多行值复制并粘贴到第20(t)列中,脚本将无法工作。我如何调整我的脚本,使其能够与多行复制和粘贴一起工作

function onEdit(e){
let ss = SpreadsheetApp
let activeSheet = ss.getActive().getActiveSheet()
let lookupSheet = ss.getActive().getSheetByName("Workbook")
let editedCell = e.range
let editedCol = editedCell.getColumn()
let editedRow = editedCell.getRow()
let lookupReferences = lookupSheet.getRange("A3:A").getValues().map((elem)=>elem[0].toUpperCase().trim())
let lookupValues = lookupSheet.getRange("C3:C").getValues()
let rowFound;
if (e.value !== "" && e.value !==null && e.value !== undefined && editedCol==20){
  for (let [index,reference] of lookupReferences.entries()){
  if (e.value.toUpperCase().trim() == reference)
  rowFound = index
  }
activeSheet.getRange(editedRow,editedCol+2,1,1).setValue(lookupValues[rowFound])
}
else if((e.value == "" || e.value == null) &&editedCol ==20){
  activeSheet.getRange(editedRow,editedCol+2,1,1).setValue("")
}
}
由于私人数据的原因,我没有这张表,但如果有人需要帮助,我可以制作一份示例副本。脚本所做的只是查找。

您可以参考此示例修改:
函数onEdit(e){
让lookupSheet=e.source.getSheetByName(“工作簿”);
设editedCell=e.range;
让editedCol=editedCell.getColumn();
设editedRow=editedCell.getRow();
让totalRow=editedCell.getNumRows();
设totalCol=editedCell.getNumColumns();
让lookupReferences=lookupSheet.getRange(“A3:A”).getValues().map((elem)=>elem[0].toUpperCase().trim())
让lookupValues=lookupSheet.getRange(“C3:C”).getValues()
让我们发现;
Logger.log(“totRow:+totalRow+”totCol:+totalCol+”startRow:“+editedRow+”startCol:”+editedCol);
if(totalCol==1&&editedCol==20){
//循环所有行
对于(var i=0;i
function onEdit(e){
  let lookupSheet = e.source.getSheetByName("Workbook");
  let editedCell = e.range;
  let editedCol = editedCell.getColumn();
  let editedRow = editedCell.getRow();
  let totalRow = editedCell.getNumRows();
  let totalCol = editedCell.getNumColumns();
  let lookupReferences = lookupSheet.getRange("A3:A").getValues().map((elem)=>elem[0].toUpperCase().trim())
  let lookupValues = lookupSheet.getRange("C3:C").getValues()
  let rowFound;
  
  Logger.log("totRow: "+totalRow+" totCol: "+totalCol+" startRow: "+editedRow+" startCol: "+editedCol);
  if(totalCol==1 && editedCol==20){
    //Loop all rows
    for(var i = 0; i<totalRow; i++){
      var currentRow = editedCell.offset(i,0);
      var value = currentRow.getValue();
      Logger.log("curr row: "+currentRow.getRow()+" value: "+value);
      if(value !== "" && value !==null && value !== undefined){
        for (let [index,reference] of lookupReferences.entries()){
          if (value.toUpperCase().trim() == reference){
            rowFound = index
            break;
          }
        }
        lookupSheet.getRange(currentRow.getRow(),editedCol+2,1,1).setValue(lookupValues[rowFound])

      }
      else if(value == "" || value == null){
        lookupSheet.getRange(currentRow.getRow(),editedCol+2,1,1).setValue("")
      }
    }
  }

}