首页 > 解决方案 > 如果数组中的 id 匹配,则设置行中第一列的值

问题描述

我正在尝试在一个范围内设置复选框。firebase_id 数组必须与范围中的 B 列匹配。如果匹配?将行设置为 TRUE。但我得到了一些随机检查的 checboxxes ..

我究竟做错了什么..?

function setCheckboxIfValueKinguinIdExist() {
      const AS = SpreadsheetApp.getActiveSpreadsheet();
      const SHEET_TESTING = AS.getSheetByName("Testing");
      
      let get_firebase_items = getSelectedIdsFromFirebase();
      let firebase_ids = get_firebase_items.map(function(item){return item.kinguinId}); // [ '17','2962','9798']
      let last_row = SHEET_TESTING.getLastRow();
     
       
      let values = SHEET_TESTING.getRange("A2:B"+last_row).getValues();
      let row = 1; 
      for(let a in values) {
        let item = values[a][1];

        if(firebase_ids.includes(item) === true){
           SHEET_TESTING.getRange(row,1).setValue("TRUE");
        }   
     
        row++;
      }
    }

标签: javascriptgoogle-apps-script

解决方案


尝试这个:

function setCheckboxIfValueKinguinIdExist() {
  const AS = SpreadsheetApp.getActiveSpreadsheet();
  const SHEET_TESTING = AS.getSheetByName("Testing");
  let get_firebase_items = getSelectedIdsFromFirebase();
  let firebase_ids = get_firebase_items.map(function(item){return item.kinguinId}); // [ '17','2962','9798']
  var last_row = SHEET_TESTING.getLastRow();
  var values = SHEET_TESTING.getRange("A2:B"+last_row).getValues();
  var row = 1; 
  values.forEach((r,i)=>{
      if(firebase_ids.includes(r[1])) {
      SHEET_TESTING.getRange(i+2,1).setValue("TRUE");
    }   
  });
}

推荐阅读