1. bkezh - 26 Апреля, 2022 - 06:06:19 - перейти к сообщению
При создании и редактировании гугл таблицы (API Sheets) в столбцы обозначение которых состоит из 2х букв изначиная с АА и далее(27+) данные не записываются и не обнавляются. ... это я что то делаю не так или ...? Выручайте! второй день бьюсь.
2. bkezh - 26 Апреля, 2022 - 09:00:38 - перейти к сообщению
(для просмотра ссылки Вам необходимо авторизоваться) пример для теста. не забудьте ключ.
3. Kibor - 26 Апреля, 2022 - 10:04:46 - перейти к сообщению
Максимально можно писать по Z
Или измените и доработайте шаблон UpdateGoogleSheets
Или измените и доработайте шаблон UpdateGoogleSheets
4. bkezh - 26 Апреля, 2022 - 12:31:00 - перейти к сообщению
понял ... буду пробывать.
5. Kibor - 27 Апреля, 2022 - 03:59:53 - перейти к сообщению
Обновил шаблоны.
Можно записывать и считывать таблицы более широкие.
Можно записывать и считывать таблицы более широкие.
6. bkezh - 27 Апреля, 2022 - 08:53:54 - перейти к сообщению
Kibor пишет:
Обновил шаблоны.
Можно записывать и считывать таблицы более широкие.
Можно записывать и считывать таблицы более широкие.
CODE:
if (CN_GoogleSheets[0][n]<26) cs=formatic(CN_GoogleSheets[0][n]+65)+format(CN_GoogleSheets[1][n]);
else
if (CN_GoogleSheets[0][n]>26 && CN_GoogleSheets[0][n]<52) cs="A"+formatic(CN_GoogleSheets[0][n]+65-26)+format(CN_GoogleSheets[1][n]);
else
if (CN_GoogleSheets[0][n]>52 && CN_GoogleSheets[0][n]<78) cs="B"+formatic(CN_GoogleSheets[0][n]+65-52)+format(CN_GoogleSheets[1][n]);
else
if (CN_GoogleSheets[0][n]>78 && CN_GoogleSheets[0][n]<104) cs="C"+formatic(CN_GoogleSheets[0][n]+65-78)+format(CN_GoogleSheets[1][n]);
else
cs="D"+formatic(CN_GoogleSheets[0][n]+65-104)+format(CN_GoogleSheets[1][n])
else
if (CN_GoogleSheets[0][n]>26 && CN_GoogleSheets[0][n]<52) cs="A"+formatic(CN_GoogleSheets[0][n]+65-26)+format(CN_GoogleSheets[1][n]);
else
if (CN_GoogleSheets[0][n]>52 && CN_GoogleSheets[0][n]<78) cs="B"+formatic(CN_GoogleSheets[0][n]+65-52)+format(CN_GoogleSheets[1][n]);
else
if (CN_GoogleSheets[0][n]>78 && CN_GoogleSheets[0][n]<104) cs="C"+formatic(CN_GoogleSheets[0][n]+65-78)+format(CN_GoogleSheets[1][n]);
else
cs="D"+formatic(CN_GoogleSheets[0][n]+65-104)+format(CN_GoogleSheets[1][n])
а если что то около этого прикрутить то дальше будет запалнять?
7. Zireael - 28 Апреля, 2022 - 06:00:46 - перейти к сообщению
Цитата:
а если что то около этого прикрутить то дальше будет запалнять?
Что хотите получить этим кодом?
8. bkezh - 28 Апреля, 2022 - 07:25:37 - перейти к сообщению
Zireael пишет:
Цитата:
а если что то около этого прикрутить то дальше будет запалнять?
Что хотите получить этим кодом?
Раньше Гугл таблицы можно было заполнять в диапозоне 26 сталбцов(A-Z) ... Владимир отреагировал на мою проблему (за что ему огромное спасибо!) и обновил шаблон модуля UpdateGoogleSheets ... теперь можно заполнять диапазон 54 столбца (A-AZ) ...
CODE:
for (n=0; n<KML_GoogleSheets; n++)
{
if (CN_GoogleSheets[0][n]<26) cs=formatic(CN_GoogleSheets[0][n]+65)+format(CN_GoogleSheets[1][n]);
else cs="A"+formatic(CN_GoogleSheets[0][n]+65-26)+format(CN_GoogleSheets[1][n]);
if (FI_GoogleSheets[n]==0)
{
if (n+1<KML_GoogleSheets)sendgetpython("{^"range^": ^""+sheetname+"!"+cs+"^","+"^"majorDimension^": ^"ROWS^","+"^"values^": [[^""+Values_GoogleSheets[n]+"^"]]},");
else t=sendgetpython("{^"range^": ^""+sheetname+"!"+cs+"^","+"^"majorDimension^": ^"ROWS^","+"^"values^": [[^""+Values_GoogleSheets[n]+"^"]]}]}).execute()");
}
else
{
if (n+1<KML_GoogleSheets)sendgetpython("{^"range^": ^""+sheetname+"!"+cs+"^","+"^"majorDimension^": ^"ROWS^","+"^"values^": [[^""+Values_GoogleSheets[n]+"^"]]},");
else t=sendgetpython("{^"range^": ^""+sheetname+"!"+cs+"^","+"^"majorDimension^": ^"ROWS^","+"^"values^": [["+Values_GoogleSheets[n]+"]]}]}).execute()");
}
}
{
if (CN_GoogleSheets[0][n]<26) cs=formatic(CN_GoogleSheets[0][n]+65)+format(CN_GoogleSheets[1][n]);
else cs="A"+formatic(CN_GoogleSheets[0][n]+65-26)+format(CN_GoogleSheets[1][n]);
if (FI_GoogleSheets[n]==0)
{
if (n+1<KML_GoogleSheets)sendgetpython("{^"range^": ^""+sheetname+"!"+cs+"^","+"^"majorDimension^": ^"ROWS^","+"^"values^": [[^""+Values_GoogleSheets[n]+"^"]]},");
else t=sendgetpython("{^"range^": ^""+sheetname+"!"+cs+"^","+"^"majorDimension^": ^"ROWS^","+"^"values^": [[^""+Values_GoogleSheets[n]+"^"]]}]}).execute()");
}
else
{
if (n+1<KML_GoogleSheets)sendgetpython("{^"range^": ^""+sheetname+"!"+cs+"^","+"^"majorDimension^": ^"ROWS^","+"^"values^": [[^""+Values_GoogleSheets[n]+"^"]]},");
else t=sendgetpython("{^"range^": ^""+sheetname+"!"+cs+"^","+"^"majorDimension^": ^"ROWS^","+"^"values^": [["+Values_GoogleSheets[n]+"]]}]}).execute()");
}
}
на мой непрофисиональный взгляд(я только учусь) изменения коснулись этой части кода модуля UpdateGoogleSheets ...
Соответственно мой вопрос правильно ли я понимаю что диапазон заполняемых столбцов гугл таблиц можно еще расширить? до BZ ... CZ и т.д.
9. Zireael - 28 Апреля, 2022 - 18:26:37 - перейти к сообщению
Получить имя ячейки указав порядковый номер:
Получить номер ячейки указав имя:
CODE:
external(INT, "_strrev", "_strrev", "msvcrt.dll");
messagebox(GetName(3)); // D
messagebox(GetName(27)); // AB
for (int n=55; n<60; n++)messagebox(format(n)+" = "+GetName(n)); // BD:BH
function GetName(int num)
{
string Name2 = "";
char c[99];
getNameFromNumber(num, #Name2);
strcpy(#c[0], Name2);
_strrev(address(#c[0]));
return format(#c[0]);
}
function getNameFromNumber(int num, string #Name)
{
int numeric = mod(num, 26);
string letter = formatic(65 + numeric);
int num2 = num / 26;
Name = Name + letter;
if (num2 > 0)return getNameFromNumber(num2 - 1, #Name);
else return;
}
function mod(int x, int y){int z=x/y; return x-z*y;}
messagebox(GetName(3)); // D
messagebox(GetName(27)); // AB
for (int n=55; n<60; n++)messagebox(format(n)+" = "+GetName(n)); // BD:BH
function GetName(int num)
{
string Name2 = "";
char c[99];
getNameFromNumber(num, #Name2);
strcpy(#c[0], Name2);
_strrev(address(#c[0]));
return format(#c[0]);
}
function getNameFromNumber(int num, string #Name)
{
int numeric = mod(num, 26);
string letter = formatic(65 + numeric);
int num2 = num / 26;
Name = Name + letter;
if (num2 > 0)return getNameFromNumber(num2 - 1, #Name);
else return;
}
function mod(int x, int y){int z=x/y; return x-z*y;}
Получить номер ячейки указав имя:
CODE:
external(INT, "_strrev", "_strrev", "msvcrt.dll");
messagebox(get_number("D"));
messagebox(get_number("AB"));
function get_number(string ceil)
{
int result = 0;
char c[99];
strcpy(#c[0], ceil);
_strrev(address(#c[0]));
for(int i=0; i<size(ceil); i++)
{
int num = formatci(c[i])-64;
result = result + pow(26, i) * num;
}
return result-1;
}
messagebox(get_number("D"));
messagebox(get_number("AB"));
function get_number(string ceil)
{
int result = 0;
char c[99];
strcpy(#c[0], ceil);
_strrev(address(#c[0]));
for(int i=0; i<size(ceil); i++)
{
int num = formatci(c[i])-64;
result = result + pow(26, i) * num;
}
return result-1;
}