Google apps script 如果在Google应用程序脚本/工作表中一次粘贴/复制多行,如何让OnEdit工作?
我有一个谷歌应用程序脚本,当在第20列(T)中输入值时,它会进行查找。我的问题是,如果我将多行值复制并粘贴到第20(t)列中,脚本将无法工作。我如何调整我的脚本,使其能够与多行复制和粘贴一起工作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
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("")
}
}
}
}