искать в столбце электронной таблицы текст в строке и возвращать результат в другом столбце

Используя скрипт и таблицу Google Apps, я пытался сделать простую вещь, но могуне могу понять проблему. У меня есть лист с пустым столбцом и столбцом с текстом. Столбцы не расположены рядом друг с другом. Я пытаюсь найти текст в каждой ячейке в одном столбце, и если текст найден, то установите значение ячейки в пустом столбце как 'Да'.

Пример (извините, нет кода - я 'я ходил по кругу часами, и то, что у меня есть, настолько запутанно,Лучше всего привести пример):

Column A with text  Empty Column F
abcd efg hij
klmn opq rstu  
vwxzy                  Yes

Какой самый простой код для поиска в столбце А 'хуг» и вернутьДа' в столбце F? I '

Я посмотрел и попробовал около десятка различных примеров кода в Интернете, и могу:ни одна из них не сработает. Цени любую помощь с этим!

РЕДАКТИРОВАТЬ (Надеюсь, окончательно) для моего использования (у меня есть некоторые служебные программы, которые получают номер столбца на основе имени заголовка, этот код не включен в это, к вашему сведению):

var sskey = SpreadsheetApp.openById('**********************')

function otherfunction(){
  addCustomValue('POCs', 'Groups', 'Champion', 'Champion', 'Yes');
}

function addCustomValue(sheetNamestr, searchColnamestr, writeColnamestr, searchKeystr, writeValstr) {
  var sheet = sskey.getSheetByName(sheetNamestr);
  var searchColnum = MyUtilities.getColIndexByName(sheet, 1, searchColnamestr);
  var writeColnum = MyUtilities.getColIndexByName(sheet, 1, writeColnamestr);
  var data = sheet.getDataRange().getValues();
  for (n=0; n
 DavidF11 нояб. 2012 г., 05:19
Попробуйте использовать формулу (в F1) = arrayformula (if (iserror (FIND (")хуг», A: A)), "",»ДА"))
 user178322911 нояб. 2012 г., 17:53
thx @DavidF, но пытаюсь избежать в формулах листа с помощью ГАЗА

Ответы на вопрос(2)

function myFunction() {
  //Variable to keep track of the sheet
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  //Start at row 1, end at the last row of the spreadsheet
  for(var i=1;i
 DavidF11 нояб. 2012 г., 05:26
это делает повторные вызовы API в цикле, а не рекомендуемый подход для получения всего диапазона в начале, проработки результирующего массива и записи значений в конце. Также вопрос требует нахождения текста внутри ячейки, не равного содержимому ячейки.
 user178322911 нояб. 2012 г., 17:51
Кроме того, я не проверяю, есть ли да во втором столбце - я хочу, чтобы это было записано во втором столбце на основе поиска в первом.
 user178322911 нояб. 2012 г., 17:29
ключ к сержуответ был матч () - я не могэто нигде не найти - в w3 школах есть str.search (), но это неКажется, что он работает (или мой код был просто испорчен другими способами, что и было) - и позволил мне искать в определенной строке определенное значение, чтобы вернуть значение.
 user178322911 нояб. 2012 г., 17:48
да - я запускал его пару раз - один для поискового запроса 'Чемпион» в 'Группы столбец для возврата "Да' в 'Чемпион» столбец, а затем для 'Рег 4 ' в столбце Группы, чтобы вернуться 'Регион 4 ' в 'Область, край' колонка. без ошибок Как я уже отмечал, я использую служебную программу, чтобы извлечь номер столбца из имени столбца, - но то, что предоставил Серж, прекрасно работает.
 user179583211 нояб. 2012 г., 17:30
@DavidF - я согласен, но пользователь попросил простой, и это то, что я дал.
 Serge insas11 нояб. 2012 г., 18:34
@ user1795832 - ябоюсь, вы неправильно поняли код ... массив данных является точнымкопия» листа, если изменить элемент в нем, это точно так же, как установить ячейкузначение, так как я обновляю весь лист с массивомзначение в конце. О чем ты сказал не найдено' просто не происходит, и я могуНе вижу причин, по которым это могло бы случиться.
 user178322911 нояб. 2012 г., 17:29
У меня есть список контактов, который импортирует все мои контактные данные Google, и я хотел заполнить определенные поля в этой таблице на основе поиска групп в листе 'групповые поля. так что теперь с Сергеемs ответ, я могу искать столбец группы (или любой другой) и возвращать результаты в другом столбце в любом месте листа. это было слишком много, чтобы объяснить, я думаю, когда я впервые опубликовал вопрос, этоВот почему я свел его к простому образцу.
 user178322911 нояб. 2012 г., 17:16
THX - я думаю, сержОтвет лучше подходит - оцените вклад!
 user179583211 нояб. 2012 г., 23:29
@Sergeinsas - я прекрасно понимаю код и запускаю его сам. Что делать, если вы нев столбцах B-E не должно быть значений, но вы задаетеДа" для столбца F? Вот в чем проблема. Если у вас есть только значения в столбце A, ваш массив данных всегда будет [0] [0], [1] [0] и т. Д., Поскольку в столбцах B-E нет значений для заполнения.
 user179583211 нояб. 2012 г., 17:22
@ Serge insas - Твой почти работает, но ты можешьt установить такие значения, если только каждая ячейка в столбце A не содержит xyz, плюс он установит значения всех промежуточных столбцов в "НЕ НАЙДЕНО".
 user179583211 нояб. 2012 г., 17:39
@ user1783229, извините, я неу меня нет репутации оставлять комментарии где угодно. Вы смогли запустить его успешно? Я неЯ не вижу, как это будет работать, как в вашей редакции. Продолжая использовать 'хуг» искать, если в строке 3 содержится слово "dfhjxyzjkfh»тогда данные [2] [5] будут содержатьДа', Но если строка 5 содержалаdsjfhadjks»тогда не было быне будет данных [5] [5], потому что это нене существует (так как нет 'Да' было написано к нему). При установке значений следует выдавать ошибку.
Решение Вопроса

который делает то, что вам нужно. (Если ваш лист содержит формулы или пользовательские функции, его следует изменить, чтобы учесть это)

function test(){
  var sh = SpreadsheetApp.getActiveSheet();
  var data = sh.getDataRange().getValues(); // read all data in the sheet
  for(n=0;n<data.length;++n){ iterate="" row="" by="" and="" examine="" data="" in="" column="" a="" if(data[n][0].tostring().match('xyz')="='xyz'){" if="" contains="" 'xyz'="" then="" set="" value="" index="" [5]="" (is="" f)="" data[n][5]="YES" };="" }="" logger.log(data)="" sh.getrange(1,1,data.length,data[0].length).setvalues(data);="" write="" back="" to="" the="" sheet="" <="" code=""></data.length;++n){>
 user178322911 нояб. 2012 г., 21:02
хорошо, приятно знать - волновался, что это может работать на заднем плане, пожирая мои газовые отчисления или что-то еще »S называется :-)
 Serge insas11 нояб. 2012 г., 20:49
дон»не беспокойтесь об этом ... это случается, когда серверы Google не работаютотличное состояние ;-) или если ваш провайдер чувствует себя уставшим ...
 user178873619 окт. 2015 г., 20:36
@ Серж Инс. Если строка для поиска находится в массиве, как я могу использовать вашу функцию? я хочу проверить, если элементы строки массива нене существует в столбце, прежде чем я пытаюсь добавить этот элемент массива в конец списка. Надеюсь, вы сможете помочь мне здесь. Спасибо
 user178322911 нояб. 2012 г., 17:15
потрясающе - спасибо! немного переделал, чтобы настроить, но использовал ту же базовую структуру. см. правки выше.
 user178322911 нояб. 2012 г., 20:46
единственное, что странно, это электронные таблицы "За работой..." хотя вся функция завершена. Я поместил листовую сортировку в самом конце, чтобы доказать, что функция закончилась. И страница скрипта также указала, что функция закончилась. Дон»не знаю, почему электронная таблица продолжает говорить "за работой..." даже после окончательной сортировки. "за работой..." остается только тогда, когда на листе около 130 строк, но не тогда, когда я запускаю тест из дюжины строк. Weird. Единственный способ избавиться от него - обновить страницу.
 Alex14 янв. 2016 г., 00:02
также кажется, что ваша функция не возвращает значение, которое может привести к неправильному завершению

Ваш ответ на вопрос