垂直或水平文本的搜索功能

时间:2015-09-06 16:15:09

标签: javascript google-sheets

我编写了以下代码来搜索电子表格中的值。出于某种原因,当我尝试垂直搜索时,它会水平搜索。

我认为将valores[cc][0]更改为valores[0][cc]可以做到这一点,但它无效。

知道我做错了吗?

function onEdit(e){
  var a = e.source.getActiveSheet();
  var SearchText = "4"
  //x = mainSearch( a, 3, 1, "horizontal", SearchText);
  x = mainSearch( a, 1, 1, "vertical", SearchText);
}

//mainSearch( targetSheet, row, column, alignment, searchText)
function mainSearch( folha, linha, coluna, procTipo, procTexto) {
  if ( procTipo = "horizontal" ) {
    var alcance = folha.getRange( linha, coluna, folha.getLastRow(), 1);
  }
  else if ( procTipo = "vertical" ) {
    var alcance = folha.getRange( linha, coluna, 1, folha.getLastColumn());
  }
  else {
    Browser.msgBox("mainSerch com procTipo errado");
  }
  var valores = alcance.getValues();
  for(cc=0;cc<valores.length;++cc) {
    if ( procTipo = "horizontal" ) {
      Browser.msgBox("Horizontal --> " + valores[cc][0]);
      if ( valores[cc][0] == procTexto ) {
        return (cc + linha);
      }
    }
    else if ( procTipo = "vertical" ) {
      Browser.msgBox("Vertical --> " + valores[0][cc]);
      if ( valores[0][cc] == procTexto ) {
        return (cc + coluna);
      }
    }
  }
  return 0;
}

1 个答案:

答案 0 :(得分:1)

问题在于:

if ( procTipo = "horizontal" ) {

执行procTipo = "horizontal"时,您将"horizontal"分配给procTipo。你应该只测试它的值:

if ( procTipo == "horizontal" ) {

还有三个地方您需要将=更改为==

有些人更喜欢使用===,因为it doesn't do any type coercion,但在这种情况下==同样有效。

您必须调整迭代限制才能在垂直情况下正确搜索valores。目前你有这个:

for(cc=0;cc<valores.length;++cc) {

用以下两行代替:

var limit = (procTipo == 'horizontal' ? valores.length : valores[0].length);
for (var cc = 0; cc < limit; ++cc) {