arrays - Gscript寻找一张纸的一个值并写入第一张纸
问题描述
我正在努力让它发挥作用。基本上,我在谷歌工作表文件中有两张工作表(工作表 1 和工作表 3)。我在工作表 1 中有一个列 A,其值为 (1,2,3,4,5,6),在工作表 2 中有一个值为 (1,2,3) - 两者都从第 2 行开始。我想要当在 sheet3 中找不到匹配的值时,在 B 列中的 sheet1 更新如下 1 OK 2 OK 3 OK 4 not Ok 5 not Ok 6 not Ok
我尝试使用数组并最终得到以下结果
function IDValidation1() {
var ss= SpreadsheetApp.openById('1-GWOrXt-rbfpocrJjO-5ywDXu2oG4y1x14na252525');
var sh1=ss.getSheetByName('Sheet1');
var sh2=ss.getSheetByName("Sheet3");
var sh1rg=sh1.getRange(2,1,sh1.getLastRow(),1); //header is row 1
var sh2rg=sh2.getRange(2,1,sh2.getLastRow(),1);//header is row 1
var sh1cvA=sh1rg.getValues();
var sh2cvA=sh2rg.getValues();
for(var i=0;i<sh1cvA.length-1; i++){
for (var j=0;j<sh2cvA.length-1; j++){
if (sh1cvA[i]==sh2cvA[j]){
sh1.getRange("B"+[i+2]).setValue("Ok");
}
else {
sh1.getRange("B"+[i+2]).setValue("Not Ok");
}
}
}}
我怎样才能让它工作?目前它总是以“Not Ok”更新,但我希望前三个值是“Ok”
感谢您的帮助!
解决方案
您将 getValues 的输出视为一维数组。即使您只要求一列 - 它仍然会为您的列返回一个具有固定值 1 的二维数组。
getValues() 返回此范围的值的矩形网格。
返回值的二维数组,按行索引,然后按列
改变你的比较
if (sh1cvA[i]==sh2cvA[j]){
到
if (sh1cvA[i][0]==sh2cvA[j][0]){
推荐阅读
- python - Execute sphinx on a non-working Python script
- java - Linux user disk quota check in Java
- oracle - Data from cursor is not getting inserted in global temporary table
- reactjs - How to use multiple react suspense fallbacks with reach router?
- python - 仅重新排序 pandas DataFrame 的一部分
- reactjs - Flow inject "arbitrary" properties type annotation ('inject' from mobx-react)
- javascript - How to disable future dates in bsdatePicker
- javascript - 延迟触发错误的元素点击
- javascript - 合并两个对象数组并添加一个新的键和值
- c++ - Why are there visual studio version specific lib/dll files provided by some vendors?