我有两个选项卡,Sheet 1和Sheet 2,各有两列。
Sheet 1是条形码及其状态的数据库列表(以下拉菜单的形式)。
Sheet 2是扫描的条形码列表及其状态(尚未输入)。
这两张表都有两列,A列表示“条形码”,b列表示“状态”。
每次我用条形码扫描仪扫描我的产品时,第二页就会生成一个扫描的条形码列表。
我想做以下工作:在第2页中创建条形码列表并选择每个条形码的状态后,希望相应地更新Sheet 1的status列,以反映对应条形码的新状态。在删除了表2的数据后,工作表1中的更新状态列必须保持不变。
例如,1的列表中的,有一个从A-1到A-132的条形码数据库,并且所有的状态都是“打开的”。如果在从A-1扫描到A-10之后,我在第2页上创建了条形码列表,并将状态更改为“关闭”,我希望第1页只反映对A-1和A-10的更改。
(不幸的是,我不能让第1页的状态列与第2页的状态列相等,因为第2页的列表必须每天删除。)例如:第1页中的B1不能设置为“= Sheet 2!B1”
谢谢。
发布于 2020-09-21 06:22:15
function updatestatus() {
const ss=SpreadsheetApp.getActive();
const sh1=ss.getSheetByName('Sheet1');
const sh1sr=2;//sheet1 start row
let vs1=sh1.getRange(sh1sr,1,sh1.getLastRow()-sh1sr+1,2).getValues();
const sh2=ss.getSheetByName('Sheet2');
const sh2sr=2;//sheet2 start row
const vs2=sh2.getRange(sh2sr,1,sh2.getLastRow()-sh2sr+1,2).getValues();
const sObj={};//Status object
vs2.forEach(function(r,i){if(!sObj.hasOwnProperty(r[0])){sObj[r[0]]=r[1];}});
vs1.forEach(function(r,i){if(sObj.hasOwnProperty(r[0])){r[1]=sObj[r[0]];}});
sh1.getRange(sh1sr,1,sh1.getLastRow()-sh1sr+1,2).setValues(vs1);//Loads data all at one time
}https://stackoverflow.com/questions/63986507
复制相似问题