Google Script не может прочитать свойство «0»

1

Я пытаюсь написать код, который будет смотреть значение A3 в sheet1 и проверить, существует ли он в столбце A в листе2.

Случается, что он работает только при наличии соответствующих значений. В противном случае у меня есть это "TypeError: невозможно прочитать свойство" 0 "из undefined. (Строка 14, файл" testing2 ").

Пожалуйста помоги!

function findInColumn(column, id) {

  var ss  = SpreadsheetApp.getActiveSpreadsheet();
  var columntosearch = ss.getRange('TABELA DE HISTORICO DE PAGAMENTOS!A:A');
  var id = ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOSINDIRETOS!A3').getValue();

  var values = columntosearch.getValues(); 
  var row = 0;

  while ( values[row] && values[row][0] !== id ) {
    row++;
  }

  if (values[row][0] === id) 
    ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!A3').copyTo(ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!A6'), {contentsOnly:true});
  else 
    ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!D3').copyTo(ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!D6'), {contentsOnly:true});
}
Теги:
google-app-engine
google-apps-script

2 ответа

0
Лучший ответ

Я думаю, что Javascript метод indexOf поможет вам здесь. Вот документация: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf?v=control

Я немного изменил код, чтобы помочь вам. Для объяснения изменений есть встроенные комментарии.

function findInColumn(column, id) {
  var ss  = SpreadsheetApp.getActiveSpreadsheet();

  //getValues returns a multidimensionalarray, so i am using reduce to flatten it
  var columntosearch = ss.getRange('TABELA DE HISTORICO DE PAGAMENTOS!A:A')
    .getValues()
    .reduce(function(a, b) {return a.concat(b);});

  var id = ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOSINDIRETOS!A3').getValue();

  //indexOf returns the index where the id is found or -1 if it isn't found
  var isInColumn = columntosearch.indexOf(id);

  //check that isInColumn is not -1
  if(isInColumn > -1) 
    ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!A3').copyTo(ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!A6'), {contentsOnly:true});
  else 
    ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!D3').copyTo(ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!D6'), {contentsOnly:true});
}

Надеюсь, это поможет!

  • 0
    Джордан, работает отлично! Ценю твою помощь!
  • 0
    Отличные новости! Рад помочь
Показать ещё 2 комментария
0
function valueOfA3insheet1inColumnAsheet2()
{
  var ss=SpreadsheetApp.getActive();
  var sht1=ss.getSheetByName('sheet1');
  var rng1=sht1.getRange('A3');
  var valueinA3 = rng1.getValue();
  var sht2=ss.getSheetByName('sheet2');
  var rng2=sht2.getRange('A:A');
  var rng2A=rng2.getValues();
  var s='<table border="1"><tr><th>Value</th><th>Cell</th></tr>';
  for(var i=0;i<rng2A.length;i++)
  {
    if(rng2A[i][0]==valueinA3)
    {
      var r = sht2.getRange(i+1,1,1,1).getA1Notation();
      s+='<tr><td>' + rng2A[i][0] + '</td><td>' + r + '</td></tr>'
    }
  }
  s+='</table>';
  var html=HtmlService.createHtmlOutput(s);
  SpreadsheetApp.getUi().showModelessDialog(html, 'Values Found')
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню