我有一个简单的函数,可以根据 ID 列查找另一张工作表上的文本,并替换同一工作表的一个特定列中的文本。但我需要这个函数能够获取多个值并在单击按钮后立即替换它们。有人可以帮我吗?这是仅一个值的代码。
function saveRecord7(){
const ss = SpreadsheetApp.getActiveSpreadsheet()
const formWS = ss.getSheetByName('Dashboard')
const dataWS = ss.getSheetByName('Static_VDatabase_UID')
const idCell = formWS.getRange('G7')
const fieldRange =["AB7"]
const clearcell = formWS.getRange('AB7')
const id = idCell.getValue()
if(id== ''){
//createNewRecord()
return
}
const cellFound = dataWS.getRange("A:A")
.createTextFinder(id)
.matchCase(true)
.matchEntireCell(true)
.findNext()
if(!cellFound) return
const row = cellFound.getRow()
const fieldValues = fieldRange.map(f => formWS.getRange(f).getValue())
fieldValues.unshift()
dataWS.getRange(row,20,1,fieldValues.length).setValues([fieldValues])
clearcell.clearContent();
}
function saveRecordsBatch() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const formWS = ss.getSheetByName('Dashboard');
const dataWS = ss.getSheetByName('Static_VDatabase_UID');
// Assuming IDs start from G1 and values from AB1
const idsRange = formWS.getRange('G1:G'); // Adjust the range as needed
const valuesRange = formWS.getRange('AB1:AB'); // Adjust the range as needed
const ids = idsRange.getValues().filter(String); // Remove empty rows
const values = valuesRange.getValues().filter(String); // Remove empty rows
if (ids.length !== values.length) {
// Make sure each ID has a corresponding value
throw new Error('Mismatch between IDs and values length');
}
ids.forEach((idArray, index) => {
const id = idArray[0];
if (id === '') {
return; // Skip empty IDs
}
const cellFound = dataWS.getRange("A:A")
.createTextFinder(id)
.matchCase(true)
.matchEntireCell(true)
.findNext();
if (!cellFound) return;
const row = cellFound.getRow();
// Assuming you want to replace the value in column 20
dataWS.getRange(row, 20).setValue(values[index][0]);
});
// Clear the input ranges after processing
idsRange.clearContent();
valuesRange.clearContent();
}