Номер строки из гугл таблицы.

  • Автор темы Автор темы 110100
  • Дата начала Дата начала

110100

Client
Регистрация
21.06.2016
Сообщения
50
Реакции
2
Баллы
8
Приветствую.
Подскажите решение.
Есть гугл таблица, при совпадении значения нужно получить номер строки. Чем это можно реализовать?
Может есть какой готовый кубик ? Подскажите где поискать. По форуму не нашел.
 
К сожалению через стандартные экшены такое сделать нельзя, но можно воспользоваться C# сниппетом.

Некоторые пояснения:
- в проекте должна существовать переменная с именем keyword из которой будет браться слово для поиска
- во второй строке, в кавычках, надо указать имя таблицы.
- в четвёртой строке надо указать номер колонки, по которой будет осуществляться поиск
- если ничего не найдено, вернётся -1
- поиск регистрозависимый (MAN != man)
- тут проверяется не точное совпадение строк, а вхождение строки keyword в строку из ячейки (иными словами: если мы ищем слово пожар, а в текущей ячейке есть слово пожарный, то код вернёт номер текущей строки)
- в настройках экшена надо указать переменную, в которую запишется результат

C#:
Развернуть Свернуть Копировать
// Имя таблицы
string GTableName = "table";
// Номер (нумерация с нуля!) КОЛОНКИ по которой будем искать совпадение.
int column = 0;
// Слово для поиска.
string keyword = project.Variables["keyword"].Value;

int result = -1;

for (int i=0; i<project.GoogleSpreadsheets[GTableName].RowCount; i++)
{
    string cell = project.GoogleSpreadsheets[GTableName].GetCell(column, i);
    if (cell.Contains(keyword))
    {
        result = i;
        break;
    }
}

return result;
 
Приветствую.
Подскажите решение.
Есть гугл таблица, при совпадении значения нужно получить номер строки. Чем это можно реализовать?
Может есть какой готовый кубик ? Подскажите где поискать. По форуму не нашел.

var x = project.GoogleSpreadsheets["x"];
string y = project.Variables["a"].Value.ToLower();
return x.GetColumn("G").ToList().IndexOf(x.GetColumn("G").ToList().Where(e=>e.ToLower()==y));

p.s. писал на коленке, мог ошибиться в гуглспредшитс
 
К сожалению через стандартные экшены такое сделать нельзя, но можно воспользоваться C# сниппетом.

Некоторые пояснения:
- в проекте должна существовать переменная с именем keyword из которой будет браться слово для поиска
- во второй строке, в кавычках, надо указать имя таблицы.
- в четвёртой строке надо указать номер колонки, по которой будет осуществляться поиск
- если ничего не найдено, вернётся -1
- поиск регистрозависимый (MAN != man)
- тут проверяется не точное совпадение строк, а вхождение строки keyword в строку из ячейки (иными словами: если мы ищем слово пожар, а в текущей ячейке есть слово пожарный, то код вернёт номер текущей строки)
- в настройках экшена надо указать переменную, в которую запишется результат

C#:
Развернуть Свернуть Копировать
// Имя таблицы
string GTableName = "table";
// Номер (нумерация с нуля!) КОЛОНКИ по которой будем искать совпадение.
int column = 0;
// Слово для поиска.
string keyword = project.Variables["keyword"].Value;

int result = -1;

for (int i=0; i<project.GoogleSpreadsheets[GTableName].RowCount; i++)
{
    string cell = project.GoogleSpreadsheets[GTableName].GetCell(column, i);
    if (cell.Contains(keyword))
    {
        result = i;
        break;
    }
}

return result;
Благодарю . работает только не пойму почему он ошивается на одно значение. строка 400 а показывает 399, не пойму где затыка
 
Благодарю . работает только не пойму почему он ошивается на одно значение. строка 400 а показывает 399, не пойму где затыка
Нумерация с нуля.

И ещё может влиять включенная настройка таблицы "Первая строка - заголовки"
 
var x = project.GoogleSpreadsheets["x"];
string y = project.Variables["a"].Value.ToLower();
return x.GetColumn("G").ToList().IndexOf(x.GetColumn("G").ToList().Where(e=>e.ToLower()==y));

p.s. писал на коленке, мог ошибиться в гуглспредшитс


Ошибку выдавало переделал


C#:
Развернуть Свернуть Копировать
var x = project.GoogleSpreadsheets["x"];
string y = project.Variables["a"].Value.ToLower();
return x.GetColumn("G").ToList().FindIndex(e => e.ToLower() == y);
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)