[INTERFACE]
DIALOG, "Создание Гугл Таблицы Python", 944, 456;
STATIC, "Путь к файлу ключа JSON", 4, 4, 136, 20;
EDIT, 144, 4, 428, 20, string JSON_KEY;
BUTTON_FILE, "Выбрать файл", 576, 4, 100, 20, JSON_KEY;
STATIC, "Сохранить идентификатор и ссылку таблицы", 4, 28, 236, 20;
EDIT, 244, 28, 328, 20, string ID_LINK_PATH;
BUTTON_PATH, "Выбрать путь", 576, 28, 100, 20, ID_LINK_PATH;
STATIC, "Название файла", 684, 28, 88, 20;
EDIT, 776, 28, 156, 20, string ID_LINK_FILE;
STATIC, "Сохранить идентификатор в переменную", 4, 52, 220, 20;
EDIT, 228, 52, 148, 20, string ID_CREATEGS;
CHECK, "Открыть файл с идентификатором и ссылкой после создания страницы", 4, 76, 392, 20, int ID_LINK_OPEN;
STATIC, "Название документа", 4, 100, 112, 20;
EDIT, 120, 100, 312, 20, string DocName;
STATIC, "Название листа", 496, 100, 88, 20;
EDIT, 588, 100, 312, 20, string SheetName;
STATIC, "Количество Столбцов", 4, 124, 120, 20;
EDIT, 128, 124, 100, 20, int Columns;
STATIC, "Количество Рядов", 260, 124, 100, 20;
EDIT, 364, 124, 100, 20, int Row;
CHECK, "Установить ширину столбцов (0-3=300 означает ширина A, B и C = 300 пикселей:", 4, 148, 436, 20, int GWidth;
EDIT_MULTILINE, 456, 148, 156, 96, string Width;
CHECK, "Установить высоту рядов (1-5=50 означает высота радов 2, 3, 4, 5 = 50 пикселей:", 4, 252, 448, 20, int GHeight;
EDIT_MULTILINE, 456, 252, 156, 96, string Height;
CHECK, "Обнулить массив данных", 4, 352, 156, 20, int G_Reset;
STATIC, "Комментарий", 4, 376, 76, 20;
EDIT, 84, 376, 848, 20, unknown Comment;
BUTTON_OK, "Принять", 724, 400, 100, 20;
BUTTON_CANCEL, "Закрыть", 832, 400, 100, 20;
[END]

[APPEARANCE]
COLOR =150, 10, 140;
SIZE_X = 14;
SIZE_Y =6;
[END]

[INFO]
[ENDL]>>Ширина>>" = ">>Columns>>[ENDL]>>Высота>>" = ">>Row>>[ENDL]>>Comment
[END]


[ASSOC_VAR]
JSON_KEY=pathfolder()+"python\my-project-121364-fh53hjkk7ghj.json";
ID_LINK_PATH=pathfolder();
ID_LINK_FILE="LinkGoogleSheets.txt";
ID_CREATEGS=ID_CreateGS;
ID_LINK_OPEN=1;
DocName="Новый документ";
SheetName="Новый лист";
Columns=5;
Row=8;
GWidth=0;
Width="0-3=300";
GHeight=0;
Height="0-1=70";
G_Reset=1;
ID_CREATEGS_V = #~ID_CREATEGS~;
Comment=;
[END]

[GLOBAL_VAR]
int Import_CreateGoogleSheets=0;  
string PathKey_CreateGoogleSheets="";
string ~ID_CREATEGS~;
int KML_GoogleSheets=0;
[END]

[EVENT]
IF (GWidth==1)ENABLE(GETID(Width), 1);
IF (GWidth==0)ENABLE(GETID(Width), 0);
IF (GHeight==1)ENABLE(GETID(Height), 1);
IF (GHeight==0)ENABLE(GETID(Height), 0);
[END]

[FUNCTION_BODY]
function(string pathkey, string pathfile, string namefile, string #creategs, int linkopen, string docname, string sheetname, int columns, int row, int gwidth, string width, int gheight, string height, int reset)
{
  if (Import_CreateGoogleSheets==0)  
  {  
  Import_CreateGoogleSheets=1; 
  __python_sync
#Импорт
import httplib2
import apiclient.discovery
from oauth2client.service_account import ServiceAccountCredentials
__end_python    
  }
sendgetpython("CREDENTIALS_FILE = r^'"+pathkey+"^'");
sendgetpython("docname = ^'"+docname+"^'");
sendgetpython("sheetname = ^'"+sheetname+"^'");
sendgetpython("columns = ^'"+format(columns)+"^'");
sendgetpython("row = ^'"+format(row)+"^'");
  if (PathKey_CreateGoogleSheets!=pathkey)
  {
  PathKey_CreateGoogleSheets=pathkey;
  __python_sync
credentials = ServiceAccountCredentials.from_json_keyfile_name(CREDENTIALS_FILE, ['https://www.googleapis.com/auth/spreadsheets','https://www.googleapis.com/auth/drive'])
httpAuth = credentials.authorize(httplib2.Http())
service = apiclient.discovery.build('sheets', 'v4', http = httpAuth)
__end_python  
  }
__python_sync
spreadsheet = service.spreadsheets().create(body = {
    'properties': {'title': docname, 'locale': 'ru_RU'},
    'sheets': [{'properties':{'sheetType':'GRID','sheetId':0,'title':sheetname,'gridProperties':{'rowCount':row,'columnCount':columns}}}]
}).execute()
spreadsheetId = spreadsheet['spreadsheetId'] # сохраняем идентификатор файла
driveService = apiclient.discovery.build('drive', 'v3', http = httpAuth)
shareRes = driveService.permissions().create(
    fileId = spreadsheetId,
    body = {'type': 'anyone', 'role': 'reader'},  # доступ на чтение кому угодно
    fields = 'id'
).execute()
__end_python
creategs=sendgetpython("print (spreadsheetId)");// записываем идентификатор файла в string rez
  if (fopen (pathfile+namefile, "w")!=0)
  {
  fwrite(creategs);//Записываем spreadsheetId таблицы
  fwrite (ENDL);
  fwrite("https:/^/docs.google.com/spreadsheets/d/"+creategs);//Записываем полную ссылку на таблицу
  fclose();
  }
string P[3];
int tp, n;
  if (gwidth)
  {
  width=width+"^r^n";
  tp=0;
    if (regexsearch(3, #P[0], width, "[0-9]+(?=-|=|\r\n)")==3)
    {
    sendgetpython("width = ["+P[0]+", "+P[1]+", "+P[2]+"]");
    tp=tp+3;
      while (regexsearch(3, #P[0])==3)
      {
      sendgetpython("width.append("+P[0]+")");
      sendgetpython("width.append("+P[1]+")");
      sendgetpython("width.append("+P[2]+")");
      tp=tp+3;
      }
    }
  __python_sync
spreadsheet = service.spreadsheets().get(spreadsheetId = spreadsheetId).execute()
results = service.spreadsheets().batchUpdate(spreadsheetId = spreadsheet['spreadsheetId'], body = {
__end_python
  sendgetpython("^"requests^": [");
    for (n=0; n<tp; n=n+3)
    {
    __python_sync
    # Задать ширину столбца
    {
      "updateDimensionProperties": {
        "range": {
          "sheetId": 0,
          "dimension": "COLUMNS",  # COLUMNS - потому что столбец
__end_python
    sendgetpython("          ^"startIndex^": width["+format(n)+"],");
    sendgetpython("          ^"endIndex^": width["+format(n+1)+"]");
    __python_sync
        },
        "properties": {
__end_python
    sendgetpython("          ^"pixelSize^": width["+format(n+2)+"]");
    __python_sync
        },
        "fields": "pixelSize"  # нужно задать только pixelSize и не трогать другие параметры столбца
      }
    }
__end_python
    if (n+3<tp)sendgetpython(",");
      else
      {
      __python_sync
  ]
}).execute()
__end_python
      }
    }    
  }  
  if (gheight)
  {
  height=height+"^r^n";
  tp=0;
    if (regexsearch(3, #P[0], height, "[0-9]+(?=-|=|\r\n)")==3)
    {
    sendgetpython("height = ["+P[0]+", "+P[1]+", "+P[2]+"]");
    tp=tp+3;
      while (regexsearch(3, #P[0])==3)
      {
      sendgetpython("height.append("+P[0]+")");
      sendgetpython("height.append("+P[1]+")");
      sendgetpython("height.append("+P[2]+")");
      tp=tp+3;
      }
    }
  __python_sync
spreadsheet = service.spreadsheets().get(spreadsheetId = spreadsheetId).execute()
results = service.spreadsheets().batchUpdate(spreadsheetId = spreadsheet['spreadsheetId'], body = {
__end_python
  sendgetpython("^"requests^": [");
    for (n=0; n<tp; n=n+3)
    {
    __python_sync
    # Задать высоту ряда
    {
      "updateDimensionProperties": {
        "range": {
          "sheetId": 0,
          "dimension": "ROWS",  # ROWS - потому что ряд
__end_python
    sendgetpython("          ^"startIndex^": height["+format(n)+"],");
    sendgetpython("          ^"endIndex^": height["+format(n+1)+"]");
    __python_sync
        },
        "properties": {
__end_python
    sendgetpython("          ^"pixelSize^": height["+format(n+2)+"]");
    __python_sync
        },
        "fields": "pixelSize"  # нужно задать только pixelSize и не трогать другие параметры ряда
      }
    }
__end_python
    if (n+3<tp)sendgetpython(",");
      else
      {
      __python_sync
  ]
}).execute()
__end_python
      }
    }    
  }  
string t;
  if (regexsearch(1, #t, creategs, "Error")==1)
  {
  if (linkopen)start(pathfile+namefile);
  return 0;
  }
if (reset)KML_GoogleSheets=0;
if (linkopen)start(pathfile+namefile);
return 1;
}
[END]

[CALL]
(JSON_KEY, ID_LINK_PATH, ID_LINK_FILE, ID_CREATEGS_V, ID_LINK_OPEN, DocName, SheetName, Columns, Row, GWidth, Width, GHeight, Height, G_Reset)
[END]

[FUNCTION_LOGIC]  
==1
[END]