CODE:
int New_Table=1;// 1 - создать новую таблицу 0 - редактировать старую таблицу по ее "spreadsheetId"
if (runpython()==1)
{
enableconsolepython(1, 1, 50, 50, 400, 600);
string rez;
//Назавание нашего файла с ключем
string Name_File_Key="special-clothes-2c2644c5bbb0.json"; // Заменить на название своего файла, который вы скачали
//Импорт
__python_sync
import httplib2
import apiclient.discovery
from oauth2client.service_account import ServiceAccountCredentials
__end_python
//Формируем путь к нашему файлу с ключем. Можно указать свой путь
sendgetpython("CREDENTIALS_FILE = r^'"+pathfolder()+"python\"+Name_File_Key+"^'");
//Авторизуемся
__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
///////////////////////////////////////////////
if (New_Table==1)//Создать новую таблицу
{
//Создаем таблицу и лист с нужными названиями
__python_sync
spreadsheet = service.spreadsheets().create(body = {
'properties': {'title': 'Статистика заточки Особой одежды 4', 'locale': 'ru_RU'},
'sheets': [{'properties': {'sheetType': 'GRID',
'sheetId': 0,
'title': 'Результаты заточки',
'gridProperties': {'rowCount': 8, 'columnCount': 5}}}]
}).execute()
spreadsheetId = spreadsheet['spreadsheetId'] # сохраняем идентификатор файла
__end_python
//Даем доступ к таблице конкретному пользователю
__python_sync
driveService = apiclient.discovery.build('drive', 'v3', http = httpAuth)
shareRes = driveService.permissions().create(
fileId = spreadsheetId,
body = {'type': 'user', 'role': 'writer', 'emailAddress': 'morozovkv8@gmail.com'}, # Открываем доступ на редактирование
fields = 'id'
).execute()
__end_python
rez=sendgetpython("print (spreadsheetId)");// записываем идентификатор файла в string rez
if (fopen (pathfolder()+"python\Ссылка на Excel-таблицу 5.txt", "w")!=0)
{
fwrite(rez);//Записываем spreadsheetId таблицы
fwrite (ENDL);
fwrite("https:/^/docs.google.com/spreadsheets/d/"+rez);//Записываем полную ссылку на таблицу
fclose();
start(pathfolder()+"python\Ссылка на Excel-таблицу 5.txt");
}
messagebox(rez);
}
else//Редактировать старую таблицу по ее "spreadsheetId"
{
//Считываем с файла "spreadsheetId" таблицы
if (fopen (pathfolder()+"python\Ссылка на Excel-таблицу 5.txt", "r")!=0)
{
freadline (rez);//Записываем в string rez spreadsheetId таблицы
fclose();
}
//Присваиваем Python переменной с названием spreadsheetId "spreadsheetId" таблицы
sendgetpython("spreadsheetId = ^'"+rez+"^'");
}
messagebox ("Работа закончена");
closepython();
}
else messagebox ("Не удалось запустить Python");
if (runpython()==1)
{
enableconsolepython(1, 1, 50, 50, 400, 600);
string rez;
//Назавание нашего файла с ключем
string Name_File_Key="special-clothes-2c2644c5bbb0.json"; // Заменить на название своего файла, который вы скачали
//Импорт
__python_sync
import httplib2
import apiclient.discovery
from oauth2client.service_account import ServiceAccountCredentials
__end_python
//Формируем путь к нашему файлу с ключем. Можно указать свой путь
sendgetpython("CREDENTIALS_FILE = r^'"+pathfolder()+"python\"+Name_File_Key+"^'");
//Авторизуемся
__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
///////////////////////////////////////////////
if (New_Table==1)//Создать новую таблицу
{
//Создаем таблицу и лист с нужными названиями
__python_sync
spreadsheet = service.spreadsheets().create(body = {
'properties': {'title': 'Статистика заточки Особой одежды 4', 'locale': 'ru_RU'},
'sheets': [{'properties': {'sheetType': 'GRID',
'sheetId': 0,
'title': 'Результаты заточки',
'gridProperties': {'rowCount': 8, 'columnCount': 5}}}]
}).execute()
spreadsheetId = spreadsheet['spreadsheetId'] # сохраняем идентификатор файла
__end_python
//Даем доступ к таблице конкретному пользователю
__python_sync
driveService = apiclient.discovery.build('drive', 'v3', http = httpAuth)
shareRes = driveService.permissions().create(
fileId = spreadsheetId,
body = {'type': 'user', 'role': 'writer', 'emailAddress': 'morozovkv8@gmail.com'}, # Открываем доступ на редактирование
fields = 'id'
).execute()
__end_python
rez=sendgetpython("print (spreadsheetId)");// записываем идентификатор файла в string rez
if (fopen (pathfolder()+"python\Ссылка на Excel-таблицу 5.txt", "w")!=0)
{
fwrite(rez);//Записываем spreadsheetId таблицы
fwrite (ENDL);
fwrite("https:/^/docs.google.com/spreadsheets/d/"+rez);//Записываем полную ссылку на таблицу
fclose();
start(pathfolder()+"python\Ссылка на Excel-таблицу 5.txt");
}
messagebox(rez);
}
else//Редактировать старую таблицу по ее "spreadsheetId"
{
//Считываем с файла "spreadsheetId" таблицы
if (fopen (pathfolder()+"python\Ссылка на Excel-таблицу 5.txt", "r")!=0)
{
freadline (rez);//Записываем в string rez spreadsheetId таблицы
fclose();
}
//Присваиваем Python переменной с названием spreadsheetId "spreadsheetId" таблицы
sendgetpython("spreadsheetId = ^'"+rez+"^'");
}
messagebox ("Работа закончена");
closepython();
}
else messagebox ("Не удалось запустить Python");
Не могу понять, как дать права на таблицу, когда она уже создана, без создания ее по новой?
Чтобы получить доступ к таблице и Google Sheets, все делал по инструкции отсюда:(для просмотра ссылки Вам необходимо авторизоваться)
В коде нужно изменить название файла с расширением "*.json"с ключем, почту, которой будем давать права, название таблицы и листа, и название файла, который создадим и в котором будет идентификатор и ссылка на таблицу.