В Zennoposter 7 перестал работать код, который работал в v5

vinznsk

Client
Регистрация
16.09.2014
Сообщения
96
Благодарностей
19
Баллы
8
Всем привет!

Подскажите, пожалуйста, есть код по поиску ячейки из таблицы, в строке которой содержится нужный элемент. Этот код работал на старой версии, но почему-то не отрабатывает в новой (7.1.4.0)

Таблица "Revenue" - таблица Google Sheet

C#:
var textContains = project.Variables["url"].Value; // Что ищем
var table = project.Tables["Revenue"]; // Таблица с которой работаем
var col = project.Variables["sheet_revenue_column"].Value; // Колонка из которой будем брать значение

for(int i=0; i < table.RowCount; i++) {
    var cells = table.GetRow(i).ToArray();
    if (Array.Exists(cells, el => el.Contains(textContains))) {
        project.Variables["revenue"].Value = table.GetCell(col, i);
        return "Значение найдено";
    }
}
return "Ничего не нашли";
Выдает ошибку:
Код:
Выполнение действия CSharp OwnCode: Последовательность не содержит соответствующий элемент
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
196
Баллы
43
скорее всего нет доступов у зенки к гугл таблицам , так как вы перешли с одной версии на другую, нужно 7й версии предоставить доступ .
 

vinznsk

Client
Регистрация
16.09.2014
Сообщения
96
Благодарностей
19
Баллы
8
Доступы есть, шаблон выполняется если делать без C# и просто через кубик выдергивать нужную колонку.

Вот так работает

56118


Но мне так не подходит, т.к. я задаю колонку во входных данных
 

vinznsk

Client
Регистрация
16.09.2014
Сообщения
96
Благодарностей
19
Баллы
8

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
ну фиг знает. пока увидел что не соответствие типов переменных есть. col как string берется , а надо через int.parse в int преобразовывать
56120
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
тыкс... глянул, там вторая перегрузка идет поиск через имя колонки... а где в таблице имя колонки ? это A,B,C или по первой строке ищет. чот я даже не в курсах
56127
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 690
Баллы
113
ну что тут можно посоветовать... я бы начал прям перед каждой командой выставлять вывод в лог с номером шага и какими нибудь данными. тогда и можно увидеть на каком шаге сбоит.
 

vinznsk

Client
Регистрация
16.09.2014
Сообщения
96
Благодарностей
19
Баллы
8
а надо через int.parse в int преобразовывать
Да я даже если эту строку уберу из кода, ошибка та же. Так что это не в этом дело.

@sergodjan66 можете посмотреть,пожалуйста? Похоже на баг 7ой версии. Что-то не так отрабатывает с Google Таблицами, хотя с файлами норм работало.

Любое другое решение подойдет, пока приходится каждый раз колонки в проекте менять руками.

P.S. как временное решение, сделал через кубики обход таблицы в цикле.
 
Последнее редактирование:

vinznsk

Client
Регистрация
16.09.2014
Сообщения
96
Благодарностей
19
Баллы
8
Никто не подскажет как код починить? Может лучше в багах эту проблему завести
 

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
196
Баллы
43
Никто не подскажет как код починить? Может лучше в багах эту проблему завести
C#:
var textContains = project.Variables["url"].Value; // Что ищем
var table = project.GoogleSpreadsheets["Revenue"]; // Таблица с которой работаем
var col = project.Variables["sheet_revenue_column"].Value; // Колонка из которой будем брать значение

for(int i=0; i < table.RowCount; i++) {
    var cells = table.GetRow(i).ToArray();
    if (Array.Exists(cells, el => el.Contains(textContains))) {
        project.Variables["revenue"].Value = table.GetCell(col, i);
        return "Значение найдено";
    }
}
return "Ничего не нашли";
 
  • Спасибо
Реакции: doc и vinznsk

vinznsk

Client
Регистрация
16.09.2014
Сообщения
96
Благодарностей
19
Баллы
8
C#:
var textContains = project.Variables["url"].Value; // Что ищем
var table = project.GoogleSpreadsheets["Revenue"]; // Таблица с которой работаем
var col = project.Variables["sheet_revenue_column"].Value; // Колонка из которой будем брать значение

for(int i=0; i < table.RowCount; i++) {
    var cells = table.GetRow(i).ToArray();
    if (Array.Exists(cells, el => el.Contains(textContains))) {
        project.Variables["revenue"].Value = table.GetCell(col, i);
        return "Значение найдено";
    }
}
return "Ничего не нашли";
вот я невнимательный... не подумал, как-то про GoogleSpreadsheets. Вроде работает
Спасибо!
 

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