Как проверить, существует ли значение в электронной таблице Google или нет, используя скрипт приложений - PullRequest
0 голосов
/ 09 мая 2020

Как проверить, существует ли значение в электронной таблице Google или не используется скрипт приложений. Я хочу проверить, существует ли Sam во всей электронной таблице или нет, используя скрипт приложений. Если существует, я хочу выполнить задачу ...

Here is the spreadsheet

function doGet(e) {
  return HtmlService.createHtmlOutput("Hi there");
}

function doPost(e) {
  // this is where telegram works
  var data = JSON.parse(e.postData.contents);
  var text = data.message.text;
  var id = data.message.chat.id;

  var userName  = data.message.from.username;

  if(/^#/.test(text)) {
    var sheetName = text.slice(1).split(" ")[0];
    var sheet = SpreadsheetApp.openById(ssId).getSheetByName(sheetName) ? SpreadsheetApp.openById(ssId).getSheetByName(sheetName) : SpreadsheetApp.openById(ssId).insertSheet(sheetName);
    var comment = text.split(" ").slice(1).join(" ");
    sheet.appendRow([userName,new Date(),id,name,comment,answer]);
  }

  //check if user is new in group
  // this gets the range
  var range = SpreadsheetApp.getActiveRange().getValues();  

  var searchString = "marsad01";

  var isSearchStringInRange = range.some( function(row){
    return row[0] === searchString

  });


  if(isSearchStringInRange){
  // do something
        sendMessage(id, answer, name);

  }else{

    sendGreetingMessage(id, answer, name);

  }


}

есть ли способ как это сделать

Ответы [ 2 ]

2 голосов
/ 09 мая 2020

В зависимости от того, хотите ли вы выбрать диапазон или всегда использовать весь столбец A: A. В первом случае сделайте так:

// this gets the range
var range = SpreadsheetApp.getActiveRange().getValues();

// this is what you are searching for
var searchString = "Sam";

// this is whether what you are searching for exists 
var isSearchStringInRange = range.some( function(row){
    return row[0] === searchString
});

// then you can proceed to do something like
if( isSearchStringInRange ){
  // do something
}
1 голос
/ 11 мая 2020

Ответ:

Вы можете определить textFinder и запустить его в своем диапазоне данных.

Код:

function findSam() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];  
  var range = sheet.getDataRange();
  var textFinder = range.createTextFinder('Sam');
  var locations = [];
  
  var occurrences = textFinder.findAll().map(x => x.getA1Notation());
  
  if (occurrences == []) {
    // do something if "Sam" not in sheet 
  }
  else {
    // do stuff with each range: 
  }  
}

Это код будет:

  • Найти все ячейки, содержащие "Sam", на первом листе электронной таблицы
  • Добавить объект Range, содержащий "Sam", в массив диапазонов
  • Сопоставьте массив диапазонов с массивом нотаций A1, которые представляют собой все ячейки, содержащие «Sam».

Отсюда вы можете делать то, что sh с диапазонами . Если «Sam» нет на листе, то occurrences будет пустым массивом, и вы можете делать здесь то, что sh.

Надеюсь, это будет вам полезно!

Ссылки:

...