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

110100

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

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 817
Баллы
113
К сожалению через стандартные экшены такое сделать нельзя, но можно воспользоваться 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;
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Приветствую.
Подскажите решение.
Есть гугл таблица, при совпадении значения нужно получить номер строки. Чем это можно реализовать?
Может есть какой готовый кубик ? Подскажите где поискать. По форуму не нашел.
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. писал на коленке, мог ошибиться в гуглспредшитс
 

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;
Благодарю . работает только не пойму почему он ошивается на одно значение. строка 400 а показывает 399, не пойму где затыка
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 817
Баллы
113
Благодарю . работает только не пойму почему он ошивается на одно значение. строка 400 а показывает 399, не пойму где затыка
Нумерация с нуля.

И ещё может влиять включенная настройка таблицы "Первая строка - заголовки"
 

ezotonal

Client
Регистрация
13.01.2014
Сообщения
819
Благодарностей
231
Баллы
43
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);
 

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