Google apps script 使用GAS搜索列A,并在匹配时返回列B的值

Google apps script 使用GAS搜索列A,并在匹配时返回列B的值,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个脚本,它将搜索工作表的列标题,并返回下面与搜索条件匹配的行中的所有值。我想修改这个脚本,改为在A列中搜索该条件,并从B列返回所有相应的行值 因此,在下面的示例中,如果我搜索“Apples”,得到的数组将是“Red,Green” 我整天都在绞尽脑汁,想换个地方,但我一辈子都无法让它工作。我显然是谷歌应用程序脚本的新手。因此,任何帮助,特别是解释,都将不胜感激 下面是我用来搜索标题并返回以下值的脚本 函数projectTasksAdjDV(e){ Logger.log(“已启动项目任务sad

我有一个脚本,它将搜索工作表的列标题,并返回下面与搜索条件匹配的行中的所有值。我想修改这个脚本,改为在A列中搜索该条件,并从B列返回所有相应的行值

因此,在下面的示例中,如果我搜索“Apples”,得到的数组将是“Red,Green”

我整天都在绞尽脑汁,想换个地方,但我一辈子都无法让它工作。我显然是谷歌应用程序脚本的新手。因此,任何帮助,特别是解释,都将不胜感激

下面是我用来搜索标题并返回以下值的脚本

函数projectTasksAdjDV(e){
Logger.log(“已启动项目任务sadjdv(e)”;
//我们目前正在编辑的工作表
var activess=SpreadsheetApp.getActive().getSheetByName('projectTasksAdj');
//B列数据电子表格
var colBss=SpreadsheetApp.getActive().getSheetByName('projectTasks');
//C列数据电子表格
//var colCss=SpreadsheetApp.getActive().getSheetByName(“”);
//C列辅助电子表格
//var colCDVss=SpreadsheetApp.getActive().getSheetByName(“”);
//D列数据电子表格
//var colDss=SpreadsheetApp.getActive().getSheetByName('Items');
//D列辅助电子表格
//var colDDVss=SpreadsheetApp.getActive().getSheetByName('estimate-ItemsDV');
var activeCell=activess.getActiveCell();
log(“activeCell:ROW”+activeCell.getRow()+“COL”+activeCell.getColumn());
//填充B列数据验证
//  
//  
//如果我们在第1列(A),而不是第一行。。。
if(activeCell.getColumn()==1&&activeCell.getRow()>1){
//在下一列中清除当前数据验证
offset(0,1).clearDataValidations();
//在Colbs的标题行中搜索(A)列中的选择
var colB=colBss.getRange(1,2,1,colBss.getLastColumn()).getValues();
//以A列为#1开始,计数以确定匹配列
var colBIndex=colB[0].indexOf(activeCell.getValue())+2;
log(“colB:+colB[0]);
Logger.log(colB[0].indexOf(activeCell.getValue())+2);
if(colBIndex!=0){
//getRange(行、列、numRows、numColumns)
var colBvalidationRange=colBss.getRange(2,colBIndex,colBss.getLastRow()-1);
var colBvalidationRule=SpreadsheetApp.newDataValidation().RequireValidationRange(colBvalidationRange.build();
activeCell.offset(0,1).setDataValidation(colBvalidationRule);
}
}
}
如果您想查看我的工作表以供参考。我正在处理的工作表是projectTasksAdj。源数据来自projectTasks

谢谢大家!

特雷这可能会有帮助

function projectTasksAdjDV(e) {
  var activess = SpreadsheetApp.getActive().getSheetByName('projectTasksAdj');  
  var foundValues = [];  
  var activeCell = activess.getActiveCell();    
  if(activeCell.getColumn() == 1 && activeCell.getRow() > 1){
    const valueToFind = activeCell.getValue();
    var colBss = SpreadsheetApp.getActive().getSheetByName('projectTasks');
    var data=colBss.getRange(1,1,colBss.getLastRow(),2).getValues();
    for(var i=0;i<data.length;i++) {
      if(valueToFind==data[i][0]) {
        foundValues.push(data[i][1]);
      }
    }
  }
  Logger.log(foundValues.join(", "));
}
函数projectTasksAdjDV(e){
var activess=SpreadsheetApp.getActive().getSheetByName('projectTasksAdj');
var-foundValues=[];
var activeCell=activess.getActiveCell();
if(activeCell.getColumn()==1&&activeCell.getRow()>1){
const valueToFind=activeCell.getValue();
var colBss=SpreadsheetApp.getActive().getSheetByName('projectTasks');
var data=colBss.getRange(1,1,colBss.getLastRow(),2).getValues();

对于(var i=0;我非常感谢你,阿米特。对于将你的答案合并到我现有的脚本中,这使我更容易弄清楚到底发生了什么!
function projectTasksAdjDV(e) {
  var activess = SpreadsheetApp.getActive().getSheetByName('projectTasksAdj');  
  var foundValues = [];  
  var activeCell = activess.getActiveCell();    
  if(activeCell.getColumn() == 1 && activeCell.getRow() > 1){
    const valueToFind = activeCell.getValue();
    var colBss = SpreadsheetApp.getActive().getSheetByName('projectTasks');
    var data=colBss.getRange(1,1,colBss.getLastRow(),2).getValues();
    for(var i=0;i<data.length;i++) {
      if(valueToFind==data[i][0]) {
        foundValues.push(data[i][1]);
      }
    }
  }
  Logger.log(foundValues.join(", "));
}