From 21f94cfff08c4e814aae7c27a4c41e7e91c8e90f Mon Sep 17 00:00:00 2001 From: caiocbr Date: Thu, 18 Feb 2021 11:17:01 -0300 Subject: [PATCH 01/26] Adicionei a funcao insert contest e as funcoes para mexer no googlesheets api --- Func_GSAPI.py | 191 ++++++++++++++++++++++++++++++++++++++++++++++ Insert_Contest.py | 56 ++++++++++++++ 2 files changed, 247 insertions(+) create mode 100644 Func_GSAPI.py create mode 100644 Insert_Contest.py diff --git a/Func_GSAPI.py b/Func_GSAPI.py new file mode 100644 index 0000000..98ff2ff --- /dev/null +++ b/Func_GSAPI.py @@ -0,0 +1,191 @@ +def insert_rows(sheet_id , num): + request_body = { + "insertDimension": { + "range": { + "sheetId": sheet_id , + "dimension": "ROWS", + "startIndex": 0, + "endIndex": num + } + } + } + return request_body + +def merge_columns(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { + "mergeCells": { + "range": { + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "mergeType": "MERGE_COLUMNS" + } + } + return request_body + +def centralize_cells(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { + "repeatCell": + { + "cell": + { + "userEnteredFormat": + { + "horizontalAlignment": "CENTER" , + "verticalAlignment": "MIDDLE" + } + }, + "range": + { + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "fields": "userEnteredFormat" + } + } + return request_body + +def add_hyperlink(sheet_id , pos1 , pos2 , name , url): + request_body = { + "updateCells": + { + "rows": + [ + { + "values": [{ + "userEnteredValue": { + "formulaValue":'=HYPERLINK("{}";"{}")'.format(url,name) + } + }] + } + ], + "fields": "userEnteredValue", + "start": { + "sheetId": sheet_id, + "rowIndex": pos1, + "columnIndex": pos2 + } + } + } + return request_body + +def add_value(sheet_id , pos1 , pos2 , value): + request_body = { + "updateCells": + { + "rows": + [ + { + "values": [{ + "userEnteredValue": { + "stringValue":value + } + }] + } + ], + "fields": "userEnteredValue", + "start": { + "sheetId": sheet_id, + "rowIndex": pos1, + "columnIndex": pos2 + } + } + } + return request_body + +#Apenas as bordas externas +def border_cell(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { + "updateBorders": { + "range":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "top": {"style":"SOLID"}, + "bottom": {"style":"SOLID"}, + "left": {"style":"SOLID"}, + "right": {"style":"SOLID"} + } + } + return request_body + +def border_all_cells(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { + "repeatCell": { + "range":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "cell": { + "userEnteredFormat": { + "borders": { + "top": {"style":"SOLID"}, + "bottom": {"style":"SOLID"}, + "left": {"style":"SOLID"}, + "right": {"style":"SOLID"} + } + } + }, + "fields": "userEnteredFormat.borders" + } + } + return request_body + +def add_condition_rule(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { + "addConditionalFormatRule": { + "rule": { + "ranges":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "booleanRule": { + "condition": {"type": "BLANK"}, + "format": { + "backgroundColor": { + "red": 1, + "blue": 0.8, + "green": 0.8 + } + } + } + } + }, + "addConditionalFormatRule": { + "rule": { + "ranges":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "booleanRule": { + "condition": {"type": "NOT_BLANK"}, + "format": { + "backgroundColor": { + "red": 0.8, + "blue": 0.8, + "green": 1 + } + } + } + } + } + } + return request_body diff --git a/Insert_Contest.py b/Insert_Contest.py new file mode 100644 index 0000000..0f9ab09 --- /dev/null +++ b/Insert_Contest.py @@ -0,0 +1,56 @@ +from googleapiclient.discovery import build +from google.oauth2 import service_account +from Func_GSAPI import * + +#Define o escopo e as credenciais do bot +SCOPES = ['https://www.googleapis.com/auth/spreadsheets'] +SERVICE_ACCOUNT_FILE = 'credenciais.json' + +#Define o ID da planilha +SAMPLE_SPREADSHEET_ID = "15ftB4dwmhDC4eeBR0Redw-BSuqS2elypdFX1I5DauI8" + +num_usuarios = 5 + +class Contest: + name , link , editorial_link , code , date , num_question = "" , "" , "" , "" , "" , 0 + def __init__(self , name , link , editorial_link , code , date , num_question): + self.name = name + self.link = link + self.editorial_link = editorial_link + self.code = code + self.date = date + self.num_question = num_question + +def insert_contest(spreadsheet , sheet_id , contest): + requests = [] + requests.append(insert_rows(sheet_id,contest.num_question)) + requests.append(merge_columns(sheet_id,0,0,contest.num_question,4)) + requests.append(add_hyperlink(sheet_id,0,0,contest.name,contest.link)) + if contest.editorial_link != "": + requests.append(add_hyperlink(sheet_id,0,1,"Editorial",contest.editorial_link)) + requests.append(add_condition_rule(sheet_id,0,5,contest.num_question,5+num_usuarios)) + requests.append(add_value(sheet_id,0,2,contest.code)) + requests.append(add_value(sheet_id,0,3,contest.date)) + requests.append(centralize_cells(sheet_id,0,0,contest.num_question,5+num_usuarios)) + requests.append(border_all_cells(sheet_id,0,0,contest.num_question,5+num_usuarios)) + requests.append(add_condition_rule(sheet_id,0,5,contest.num_question,5+num_usuarios)) + for i in range(0,contest.num_question): + requests.append(add_value(sheet_id,i,4,chr(65+i))) + body = {"requests":requests} + spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() + + +def main(): + creds = None + creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES) + + service = build('sheets', 'v4', credentials=creds) + spreadsheet = service.spreadsheets() + + teste = Contest("caio","caio","caio","caio","caio",3) + insert_contest(spreadsheet,0,teste) + + +if __name__ == '__main__': + main() + From 17a427be277a0891df900ac7f868b3d07a71ed1d Mon Sep 17 00:00:00 2001 From: caiocbr Date: Fri, 19 Feb 2021 16:54:30 -0300 Subject: [PATCH 02/26] Conserto de erros e adicao de comentarios --- Func_GSAPI.py | 99 ++++++++++++++++++++++++++++++++++++----------- Insert_Contest.py | 28 ++++++++------ 2 files changed, 94 insertions(+), 33 deletions(-) diff --git a/Func_GSAPI.py b/Func_GSAPI.py index 98ff2ff..6c5d5ae 100644 --- a/Func_GSAPI.py +++ b/Func_GSAPI.py @@ -1,16 +1,24 @@ -def insert_rows(sheet_id , num): +#Todas as funcoes apenas compoem um request, apos usa-las e necessarios executar +#A seguinte linha de codigo para que as alteracoes sejam aplicadas: +#body = {"requests":requests} +#spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() + +#Insere uma "num" linhas na linha de numero "start_index" +def insert_rows(sheet_id , start_index , num): request_body = { "insertDimension": { "range": { "sheetId": sheet_id , "dimension": "ROWS", - "startIndex": 0, + "startIndex": start_index, "endIndex": num } } } return request_body +#Funde as colunas +#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def merge_columns(sheet_id , pos1 , pos2 , pos3 , pos4): request_body = { "mergeCells": { @@ -26,6 +34,8 @@ def merge_columns(sheet_id , pos1 , pos2 , pos3 , pos4): } return request_body +#Centraliza o texto +#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def centralize_cells(sheet_id , pos1 , pos2 , pos3 , pos4): request_body = { "repeatCell": @@ -51,6 +61,7 @@ def centralize_cells(sheet_id , pos1 , pos2 , pos3 , pos4): } return request_body +#Adiciona um texto(name) e uma url(url) na celula (pos1,pos2) def add_hyperlink(sheet_id , pos1 , pos2 , name , url): request_body = { "updateCells": @@ -75,6 +86,7 @@ def add_hyperlink(sheet_id , pos1 , pos2 , name , url): } return request_body +#Escreve "value" na celula (pos1,pos2) def add_value(sheet_id , pos1 , pos2 , value): request_body = { "updateCells": @@ -99,7 +111,8 @@ def add_value(sheet_id , pos1 , pos2 , value): } return request_body -#Apenas as bordas externas +#Realca apenas as bordas externas +#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def border_cell(sheet_id , pos1 , pos2 , pos3 , pos4): request_body = { "updateBorders": { @@ -118,6 +131,8 @@ def border_cell(sheet_id , pos1 , pos2 , pos3 , pos4): } return request_body +#Realca todas as bordas +#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def border_all_cells(sheet_id , pos1 , pos2 , pos3 , pos4): request_body = { "repeatCell": { @@ -143,7 +158,38 @@ def border_all_cells(sheet_id , pos1 , pos2 , pos3 , pos4): } return request_body -def add_condition_rule(sheet_id , pos1 , pos2 , pos3 , pos4): +#muda a cor do texto +#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +#Para o sistema rgb,com cada parametro variando de [0,1] +def change_color(sheet_id , pos1 , pos2 , pos3 , pos4 , red , green , blue): + request_body = { + "repeatCell": { + "range":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "cell": { + "userEnteredFormat": { + "textFormat": { + "foregroundColor": { + "red": red, + "green": green, + "blue": blue + } + } + } + }, + "fields": "userEnteredFormat.textFormat" + } + } + return request_body + +#Add a regra de deixar vermelho se estiver em branco +#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +def add_condition_rule1(sheet_id , pos1 , pos2 , pos3 , pos4): request_body = { "addConditionalFormatRule": { "rule": { @@ -164,28 +210,37 @@ def add_condition_rule(sheet_id , pos1 , pos2 , pos3 , pos4): } } } - } - }, + }, + "index": 0 + } + } + return request_body + +#Add a regra de deixar verde se nao estiver vazio +#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +def add_condition_rule2(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { "addConditionalFormatRule": { "rule": { "ranges":{ "sheetId": sheet_id, "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "booleanRule": { - "condition": {"type": "NOT_BLANK"}, - "format": { - "backgroundColor": { - "red": 0.8, - "blue": 0.8, - "green": 1 - } - } - } - } - } + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "booleanRule": { + "condition": {"type": "NOT_BLANK"}, + "format": { + "backgroundColor": { + "red": 0.8, + "blue": 0.8, + "green": 1 + } + } + } + }, + "index": 0 + } } return request_body diff --git a/Insert_Contest.py b/Insert_Contest.py index 0f9ab09..697192a 100644 --- a/Insert_Contest.py +++ b/Insert_Contest.py @@ -22,20 +22,26 @@ def __init__(self , name , link , editorial_link , code , date , num_question): self.num_question = num_question def insert_contest(spreadsheet , sheet_id , contest): + requests = [] - requests.append(insert_rows(sheet_id,contest.num_question)) - requests.append(merge_columns(sheet_id,0,0,contest.num_question,4)) - requests.append(add_hyperlink(sheet_id,0,0,contest.name,contest.link)) + + requests.append(insert_rows(sheet_id,4,4+contest.num_question)) + requests.append(merge_columns(sheet_id,4,0,4+contest.num_question,4)) + + requests.append(add_hyperlink(sheet_id,4,0,contest.name,contest.link)) if contest.editorial_link != "": - requests.append(add_hyperlink(sheet_id,0,1,"Editorial",contest.editorial_link)) - requests.append(add_condition_rule(sheet_id,0,5,contest.num_question,5+num_usuarios)) - requests.append(add_value(sheet_id,0,2,contest.code)) - requests.append(add_value(sheet_id,0,3,contest.date)) - requests.append(centralize_cells(sheet_id,0,0,contest.num_question,5+num_usuarios)) - requests.append(border_all_cells(sheet_id,0,0,contest.num_question,5+num_usuarios)) - requests.append(add_condition_rule(sheet_id,0,5,contest.num_question,5+num_usuarios)) + requests.append(add_hyperlink(sheet_id,4,1,"Editorial",contest.editorial_link)) + + requests.append(add_value(sheet_id,4,2,contest.code)) + requests.append(add_value(sheet_id,4,3,contest.date)) for i in range(0,contest.num_question): - requests.append(add_value(sheet_id,i,4,chr(65+i))) + requests.append(add_value(sheet_id,4+i,4,chr(65+i))) + + requests.append(centralize_cells(sheet_id,4,0,4+contest.num_question,5+num_usuarios)) + requests.append(border_all_cells(sheet_id,4,0,4+contest.num_question,5+num_usuarios)) + + requests.append(change_color(sheet_id,4,0,4+contest.num_question,2,0,0,0)) + body = {"requests":requests} spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() From baab1076428ed48951e09bee46a8b3885af60e35 Mon Sep 17 00:00:00 2001 From: caiocbr Date: Sat, 20 Feb 2021 19:57:15 -0300 Subject: [PATCH 03/26] Adicao das funcoes do google sheets api --- Func_GSAPI.py | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/Func_GSAPI.py b/Func_GSAPI.py index 6c5d5ae..86a5292 100644 --- a/Func_GSAPI.py +++ b/Func_GSAPI.py @@ -17,7 +17,7 @@ def insert_rows(sheet_id , start_index , num): } return request_body -#Funde as colunas +#Junta as linhas #Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def merge_columns(sheet_id , pos1 , pos2 , pos3 , pos4): request_body = { @@ -34,6 +34,23 @@ def merge_columns(sheet_id , pos1 , pos2 , pos3 , pos4): } return request_body +#Junta as colunas +#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +def merge_rows(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { + "mergeCells": { + "range": { + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "mergeType": "MERGE_ROWS" + } + } + return request_body + #Centraliza o texto #Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def centralize_cells(sheet_id , pos1 , pos2 , pos3 , pos4): @@ -244,3 +261,66 @@ def add_condition_rule2(sheet_id , pos1 , pos2 , pos3 , pos4): } } return request_body + +#Altera o tamanho das colunas comecando na posicao "startIndex" e temrinando na posicao +#endIndex para size +def change_size_column(sheet_id , startIndex , endIndex , size): + request_body = { + "updateDimensionProperties": { + "range": { + "sheetId": sheet_id, + "dimension": "COLUMNS", + "startIndex": startIndex, + "endIndex": endIndex + }, + "properties": { + "pixelSize": size + }, + "fields": "pixelSize" + } + } + return request_body + +#Altera o tamanho das linhas comecando na posicao "startIndex" e temrinando na posicao +#endIndex para size +def change_size_row(sheet_id , startIndex , endIndex , size): + request_body = { + "updateDimensionProperties": { + "range": { + "sheetId": sheet_id, + "dimension": "ROWS", + "startIndex": startIndex, + "endIndex": endIndex + }, + "properties": { + "pixelSize": size + }, + "fields": "pixelSize" + } + } + return request_body + +#Altera o texto para ficar em negrito +#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +def bold_cells(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { + "repeatCell": { + "range":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "cell": { + "userEnteredFormat": { + "textFormat": { + "bold" : True + } + } + }, + "fields": "userEnteredFormat.textFormat" + } + } + return request_body + From dda9c134141cca89f349460a4aecb644ae3c1243 Mon Sep 17 00:00:00 2001 From: caiocbr Date: Sat, 20 Feb 2021 20:01:29 -0300 Subject: [PATCH 04/26] Adicao das funcoes do google sheets api --- Func_GSAPI.py | 60 +++++++++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/Func_GSAPI.py b/Func_GSAPI.py index 86a5292..614dd93 100644 --- a/Func_GSAPI.py +++ b/Func_GSAPI.py @@ -1,9 +1,9 @@ -#Todas as funcoes apenas compoem um request, apos usa-las e necessarios executar -#A seguinte linha de codigo para que as alteracoes sejam aplicadas: -#body = {"requests":requests} -#spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() +# Todas as funcoes apenas compoem um request, apos usa-las e necessarios executar +# a seguinte linha de codigo para que as alteracoes sejam aplicadas: +# body = {"requests":requests} +# spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() -#Insere uma "num" linhas na linha de numero "start_index" +# Insere uma "num" linhas na linha de numero "start_index" def insert_rows(sheet_id , start_index , num): request_body = { "insertDimension": { @@ -17,8 +17,8 @@ def insert_rows(sheet_id , start_index , num): } return request_body -#Junta as linhas -#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# Junta as linhas +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def merge_columns(sheet_id , pos1 , pos2 , pos3 , pos4): request_body = { "mergeCells": { @@ -34,8 +34,8 @@ def merge_columns(sheet_id , pos1 , pos2 , pos3 , pos4): } return request_body -#Junta as colunas -#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# Junta as colunas +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def merge_rows(sheet_id , pos1 , pos2 , pos3 , pos4): request_body = { "mergeCells": { @@ -51,8 +51,8 @@ def merge_rows(sheet_id , pos1 , pos2 , pos3 , pos4): } return request_body -#Centraliza o texto -#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# Centraliza o texto +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def centralize_cells(sheet_id , pos1 , pos2 , pos3 , pos4): request_body = { "repeatCell": @@ -78,7 +78,7 @@ def centralize_cells(sheet_id , pos1 , pos2 , pos3 , pos4): } return request_body -#Adiciona um texto(name) e uma url(url) na celula (pos1,pos2) +# Adiciona um texto(name) e uma url(url) na celula (pos1,pos2) def add_hyperlink(sheet_id , pos1 , pos2 , name , url): request_body = { "updateCells": @@ -103,7 +103,7 @@ def add_hyperlink(sheet_id , pos1 , pos2 , name , url): } return request_body -#Escreve "value" na celula (pos1,pos2) +# Escreve "value" na celula (pos1,pos2) def add_value(sheet_id , pos1 , pos2 , value): request_body = { "updateCells": @@ -128,8 +128,8 @@ def add_value(sheet_id , pos1 , pos2 , value): } return request_body -#Realca apenas as bordas externas -#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# Realca apenas as bordas externas +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def border_cell(sheet_id , pos1 , pos2 , pos3 , pos4): request_body = { "updateBorders": { @@ -148,8 +148,8 @@ def border_cell(sheet_id , pos1 , pos2 , pos3 , pos4): } return request_body -#Realca todas as bordas -#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# Realca todas as bordas +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def border_all_cells(sheet_id , pos1 , pos2 , pos3 , pos4): request_body = { "repeatCell": { @@ -175,9 +175,9 @@ def border_all_cells(sheet_id , pos1 , pos2 , pos3 , pos4): } return request_body -#muda a cor do texto -#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -#Para o sistema rgb,com cada parametro variando de [0,1] +# Muda a cor do texto +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# para o sistema rgb,com cada parametro variando de [0,1] def change_color(sheet_id , pos1 , pos2 , pos3 , pos4 , red , green , blue): request_body = { "repeatCell": { @@ -204,8 +204,8 @@ def change_color(sheet_id , pos1 , pos2 , pos3 , pos4 , red , green , blue): } return request_body -#Add a regra de deixar vermelho se estiver em branco -#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# Add a regra de deixar vermelho se estiver em branco +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def add_condition_rule1(sheet_id , pos1 , pos2 , pos3 , pos4): request_body = { "addConditionalFormatRule": { @@ -233,8 +233,8 @@ def add_condition_rule1(sheet_id , pos1 , pos2 , pos3 , pos4): } return request_body -#Add a regra de deixar verde se nao estiver vazio -#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# Add a regra de deixar verde se nao estiver vazio +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def add_condition_rule2(sheet_id , pos1 , pos2 , pos3 , pos4): request_body = { "addConditionalFormatRule": { @@ -262,8 +262,8 @@ def add_condition_rule2(sheet_id , pos1 , pos2 , pos3 , pos4): } return request_body -#Altera o tamanho das colunas comecando na posicao "startIndex" e temrinando na posicao -#endIndex para size +# Altera o tamanho das colunas comecando na posicao "startIndex" e temrinando na posicao +# endIndex para size def change_size_column(sheet_id , startIndex , endIndex , size): request_body = { "updateDimensionProperties": { @@ -281,8 +281,8 @@ def change_size_column(sheet_id , startIndex , endIndex , size): } return request_body -#Altera o tamanho das linhas comecando na posicao "startIndex" e temrinando na posicao -#endIndex para size +# Altera o tamanho das linhas comecando na posicao "startIndex" e temrinando na posicao +# endIndex para size def change_size_row(sheet_id , startIndex , endIndex , size): request_body = { "updateDimensionProperties": { @@ -300,8 +300,8 @@ def change_size_row(sheet_id , startIndex , endIndex , size): } return request_body -#Altera o texto para ficar em negrito -#Num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# Altera o texto para ficar em negrito +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def bold_cells(sheet_id , pos1 , pos2 , pos3 , pos4): request_body = { "repeatCell": { From 63aa70c0061622a011bd8d417c57b30430fafd01 Mon Sep 17 00:00:00 2001 From: caiocbr Date: Mon, 22 Feb 2021 17:28:27 -0300 Subject: [PATCH 05/26] Ajuste da regras de formatacao --- Func_GSAPI.py | 481 +++++++++++++++++++++++++------------------------- 1 file changed, 239 insertions(+), 242 deletions(-) diff --git a/Func_GSAPI.py b/Func_GSAPI.py index 614dd93..d8ea930 100644 --- a/Func_GSAPI.py +++ b/Func_GSAPI.py @@ -1,326 +1,323 @@ # Todas as funcoes apenas compoem um request, apos usa-las e necessarios executar # a seguinte linha de codigo para que as alteracoes sejam aplicadas: +# requests.append(func) # body = {"requests":requests} # spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() # Insere uma "num" linhas na linha de numero "start_index" def insert_rows(sheet_id , start_index , num): - request_body = { - "insertDimension": { - "range": { - "sheetId": sheet_id , - "dimension": "ROWS", - "startIndex": start_index, - "endIndex": num - } + request_body = { + "insertDimension": { + "range": { + "sheetId": sheet_id , + "dimension": "ROWS", + "startIndex": start_index, + "endIndex": num + } + } } - } - return request_body +return request_body # Junta as linhas # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def merge_columns(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "mergeCells": { - "range": { - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "mergeType": "MERGE_COLUMNS" + request_body = { + "mergeCells": { + "range": { + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "mergeType": "MERGE_COLUMNS" + } } - } - return request_body +return request_body # Junta as colunas # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def merge_rows(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "mergeCells": { - "range": { - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "mergeType": "MERGE_ROWS" + request_body = { + "mergeCells": { + "range": { + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "mergeType": "MERGE_ROWS" + } } - } - return request_body +return request_body # Centraliza o texto # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def centralize_cells(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "repeatCell": - { - "cell": - { - "userEnteredFormat": + request_body = { + "repeatCell": { - "horizontalAlignment": "CENTER" , - "verticalAlignment": "MIDDLE" + "cell": + { + "userEnteredFormat": + { + "horizontalAlignment": "CENTER" , + "verticalAlignment": "MIDDLE" + } + }, + "range": + { + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "fields": "userEnteredFormat" } - }, - "range": - { - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "fields": "userEnteredFormat" } - } - return request_body +return request_body # Adiciona um texto(name) e uma url(url) na celula (pos1,pos2) def add_hyperlink(sheet_id , pos1 , pos2 , name , url): - request_body = { - "updateCells": - { - "rows": - [ + request_body = { + "updateCells": { - "values": [{ - "userEnteredValue": { - "formulaValue":'=HYPERLINK("{}";"{}")'.format(url,name) + "rows": + { + "values": { + "userEnteredValue": { + "formulaValue":'=HYPERLINK("{}";"{}")'.format(url,name) + } + } } - }] - } - ], - "fields": "userEnteredValue", - "start": { - "sheetId": sheet_id, - "rowIndex": pos1, - "columnIndex": pos2 + , + "fields": "userEnteredValue", + "start": { + "sheetId": sheet_id, + "rowIndex": pos1, + "columnIndex": pos2 + } } } - } - return request_body +return request_body # Escreve "value" na celula (pos1,pos2) def add_value(sheet_id , pos1 , pos2 , value): - request_body = { - "updateCells": - { - "rows": - [ + request_body = { + "updateCells": { - "values": [{ - "userEnteredValue": { - "stringValue":value + "rows": + { + "values": { + "userEnteredValue": { + "stringValue":value + } + } + }, + "fields": "userEnteredValue", + "start": { + "sheetId": sheet_id, + "rowIndex": pos1, + "columnIndex": pos2 } - }] - } - ], - "fields": "userEnteredValue", - "start": { - "sheetId": sheet_id, - "rowIndex": pos1, - "columnIndex": pos2 } } - } - return request_body +return request_body # Realca apenas as bordas externas # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def border_cell(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "updateBorders": { - "range":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "top": {"style":"SOLID"}, - "bottom": {"style":"SOLID"}, - "left": {"style":"SOLID"}, - "right": {"style":"SOLID"} + request_body = { + "updateBorders": { + "range":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "top": {"style":"SOLID"}, + "bottom": {"style":"SOLID"}, + "left": {"style":"SOLID"}, + "right": {"style":"SOLID"} + } } - } - return request_body +return request_body # Realca todas as bordas # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def border_all_cells(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "repeatCell": { - "range":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "cell": { - "userEnteredFormat": { - "borders": { - "top": {"style":"SOLID"}, - "bottom": {"style":"SOLID"}, - "left": {"style":"SOLID"}, - "right": {"style":"SOLID"} - } + request_body = { + "repeatCell": { + "range":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "cell": { + "userEnteredFormat": { + "borders": { + "top": {"style":"SOLID"}, + "bottom": {"style":"SOLID"}, + "left": {"style":"SOLID"}, + "right": {"style":"SOLID"} + } + } + }, + "fields": "userEnteredFormat.borders" } - }, - "fields": "userEnteredFormat.borders" } - } - return request_body +return request_body # Muda a cor do texto # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) # para o sistema rgb,com cada parametro variando de [0,1] def change_color(sheet_id , pos1 , pos2 , pos3 , pos4 , red , green , blue): - request_body = { - "repeatCell": { - "range":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "cell": { - "userEnteredFormat": { - "textFormat": { - "foregroundColor": { - "red": red, - "green": green, - "blue": blue - } - } + request_body = { + "repeatCell": { + "range":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "cell": { + "userEnteredFormat": { + "textFormat": { + "foregroundColor": { + "red": red, + "green": green, + "blue": blue + } + } + } + }, + "fields": "userEnteredFormat.textFormat" } - }, - "fields": "userEnteredFormat.textFormat" } - } - return request_body +return request_body # Add a regra de deixar vermelho se estiver em branco # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def add_condition_rule1(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "addConditionalFormatRule": { - "rule": { - "ranges":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "booleanRule": { - "condition": {"type": "BLANK"}, - "format": { - "backgroundColor": { - "red": 1, - "blue": 0.8, - "green": 0.8 - } - } - } - }, - "index": 0 + request_body = { + "addConditionalFormatRule": { + "rule": { + "ranges":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "booleanRule": { + "condition": {"type": "BLANK"}, + "format": { + "backgroundColor": { + "red": 1, + "blue": 0.8, + "green": 0.8 + } + } + } + }, + "index": 0 + } } - } - return request_body +return request_body # Add a regra de deixar verde se nao estiver vazio # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def add_condition_rule2(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "addConditionalFormatRule": { - "rule": { - "ranges":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "booleanRule": { - "condition": {"type": "NOT_BLANK"}, - "format": { - "backgroundColor": { - "red": 0.8, - "blue": 0.8, - "green": 1 - } - } + request_body = { + "addConditionalFormatRule": { + "rule": { + "ranges":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "booleanRule": { + "condition": {"type": "NOT_BLANK"}, + "format": { + "backgroundColor": { + "red": 0.8, + "blue": 0.8, + "green": 1 + } + } + } + }, + "index": 0 } - }, - "index": 0 } - } - return request_body +return request_body # Altera o tamanho das colunas comecando na posicao "startIndex" e temrinando na posicao # endIndex para size def change_size_column(sheet_id , startIndex , endIndex , size): - request_body = { - "updateDimensionProperties": { - "range": { - "sheetId": sheet_id, - "dimension": "COLUMNS", - "startIndex": startIndex, - "endIndex": endIndex - }, - "properties": { - "pixelSize": size - }, - "fields": "pixelSize" + request_body = { + "updateDimensionProperties": { + "range": { + "sheetId": sheet_id, + "dimension": "COLUMNS", + "startIndex": startIndex, + "endIndex": endIndex + }, + "properties": { + "pixelSize": size + }, + "fields": "pixelSize" + } } - } - return request_body +return request_body # Altera o tamanho das linhas comecando na posicao "startIndex" e temrinando na posicao # endIndex para size def change_size_row(sheet_id , startIndex , endIndex , size): - request_body = { - "updateDimensionProperties": { - "range": { - "sheetId": sheet_id, - "dimension": "ROWS", - "startIndex": startIndex, - "endIndex": endIndex - }, - "properties": { - "pixelSize": size - }, - "fields": "pixelSize" + request_body = { + "updateDimensionProperties": { + "range": { + "sheetId": sheet_id, + "dimension": "ROWS", + "startIndex": startIndex, + "endIndex": endIndex + }, + "properties": { + "pixelSize": size + }, + "fields": "pixelSize" + } } - } - return request_body +return request_body # Altera o texto para ficar em negrito # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) def bold_cells(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "repeatCell": { - "range":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "cell": { - "userEnteredFormat": { - "textFormat": { - "bold" : True - } + request_body = { + "repeatCell": { + "range":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "cell": { + "userEnteredFormat": { + "textFormat": { + "bold" : True + } + } + }, + "fields": "userEnteredFormat.textFormat" } - }, - "fields": "userEnteredFormat.textFormat" } - } - return request_body - +return request_body From e43b44d807171094b1249902d881c029db0551da Mon Sep 17 00:00:00 2001 From: caiocbr Date: Mon, 22 Feb 2021 17:45:57 -0300 Subject: [PATCH 06/26] Ajuste de formatacao --- google_sheets_utilities.py | 398 +++++++++++++++++++++++++++++++++++++ 1 file changed, 398 insertions(+) create mode 100644 google_sheets_utilities.py diff --git a/google_sheets_utilities.py b/google_sheets_utilities.py new file mode 100644 index 0000000..31d282b --- /dev/null +++ b/google_sheets_utilities.py @@ -0,0 +1,398 @@ +# ID de coluna (comecando por 0) -> notacao A1 (ate ZZ) +def int_to_column(id): + if id < 26: + return chr(ord('A') + id) + else: + return chr(ord('A') + int(id / 26) - 1) + chr(ord('A') + id - int(id / 26) * 26) + +def get_cells(sheet, SAMPLE_SPREADSHEET_ID, range): + request = sheet.values().get( + spreadsheetId = SAMPLE_SPREADSHEET_ID, + range = range + ).execute() + return request.get('values',[]) + +def get_user_column(sheet, SAMPLE_SPREADSHEET_ID, user_name): + users = get_cells(sheet, SAMPLE_SPREADSHEET_ID, "p1!H2:ZZ2") + column = 7 + user_column = 1000 + + for i in users: + for j in i: + if j == user_name: + user_column = column + column = column + 1 + + return user_column + +def get_contest_first_row(sheet, SAMPLE_SPREADSHEET_ID, contest_name): + contests = get_cells(sheet, SAMPLE_SPREADSHEET_ID, "p1!A4:A5000") + row = 4 + contest_first_row = 5000 + + for i in contests: + for j in i: + if j == contest_name: + contest_first_row = row + row = row + 1 + + return contest_first_row + +def get_contest_last_row(sheet, SAMPLE_SPREADSHEET_ID, contest_name): + contests = get_cells(sheet, SAMPLE_SPREADSHEET_ID, "p1!A4:A5000") + row = 4 + aux = False + contest_last_row = 5000 + + for i in contests: + for j in i: + if j == contest_name: + aux = True + elif aux: + contest_last_row = row + break + if contest_last_row < 5000: + break + row = row + 1 + + return contest_last_row + +def get_problem_row(sheet, SAMPLE_SPREADSHEET_ID, contest_first_row, contest_last_row, problem_name): + problems = get_cells(sheet, + SAMPLE_SPREADSHEET_ID, + "p1!G" + str(contest_first_row) + ":G" + str(contest_last_row-1) + ) + row = contest_first_row + problem_row = 5000 + + for i in problems: + for j in i: + if j == problem_name: + problem_row = row + row = row + 1 + + return problem_row + +# Todas as funcoes apenas compoem um request, apos usa-las e necessarios executar +# a seguinte linha de codigo para que as alteracoes sejam aplicadas: +# requests.append(func) +# body = {"requests":requests} +# spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() + +# Insere uma "num" linhas na linha de numero "start_index" +def insert_rows(sheet_id , start_index , num): + request_body = { + "insertDimension": { + "range": { + "sheetId": sheet_id , + "dimension": "ROWS", + "startIndex": start_index, + "endIndex": num + } + } + } + return request_body + +# Junta as linhas +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +def merge_columns(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { + "mergeCells": { + "range": { + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "mergeType": "MERGE_COLUMNS" + } + } + return request_body + +# Junta as colunas +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +def merge_rows(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { + "mergeCells": { + "range": { + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "mergeType": "MERGE_ROWS" + } + } + return request_body + +# Centraliza o texto +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +def centralize_cells(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { + "repeatCell": + { + "cell": + { + "userEnteredFormat": + { + "horizontalAlignment": "CENTER" , + "verticalAlignment": "MIDDLE" + } + }, + "range": + { + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "fields": "userEnteredFormat" + } + } + return request_body + +# Adiciona um texto(name) e uma url(url) na celula (pos1,pos2) +def add_hyperlink(sheet_id , pos1 , pos2 , name , url): + request_body = { + "updateCells": + { + "rows": + { + "values": { + "userEnteredValue": { + "formulaValue":'=HYPERLINK("{}";"{}")'.format(url,name) + } + } + } + , + "fields": "userEnteredValue", + "start": { + "sheetId": sheet_id, + "rowIndex": pos1, + "columnIndex": pos2 + } + } + } + return request_body + +# Escreve "value" na celula (pos1,pos2) +def add_value(sheet_id , pos1 , pos2 , value): + request_body = { + "updateCells": + { + "rows": + { + "values": { + "userEnteredValue": { + "stringValue":value + } + } + }, + "fields": "userEnteredValue", + "start": { + "sheetId": sheet_id, + "rowIndex": pos1, + "columnIndex": pos2 + } + } + } + return request_body + +# Realca apenas as bordas externas +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +def border_cell(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { + "updateBorders": { + "range":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "top": {"style":"SOLID"}, + "bottom": {"style":"SOLID"}, + "left": {"style":"SOLID"}, + "right": {"style":"SOLID"} + } + } + return request_body + +# Realca todas as bordas +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +def border_all_cells(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { + "repeatCell": { + "range":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "cell": { + "userEnteredFormat": { + "borders": { + "top": {"style":"SOLID"}, + "bottom": {"style":"SOLID"}, + "left": {"style":"SOLID"}, + "right": {"style":"SOLID"} + } + } + }, + "fields": "userEnteredFormat.borders" + } + } + return request_body + +# Muda a cor do texto +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# para o sistema rgb,com cada parametro variando de [0,1] +def change_color(sheet_id , pos1 , pos2 , pos3 , pos4 , red , green , blue): + request_body = { + "repeatCell": { + "range":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "cell": { + "userEnteredFormat": { + "textFormat": { + "foregroundColor": { + "red": red, + "green": green, + "blue": blue + } + } + } + }, + "fields": "userEnteredFormat.textFormat" + } + } + return request_body + +# Add a regra de deixar vermelho se estiver em branco +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +def add_condition_rule1(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { + "addConditionalFormatRule": { + "rule": { + "ranges":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "booleanRule": { + "condition": {"type": "BLANK"}, + "format": { + "backgroundColor": { + "red": 1, + "blue": 0.8, + "green": 0.8 + } + } + } + }, + "index": 0 + } + } + return request_body + +# Add a regra de deixar verde se nao estiver vazio +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +def add_condition_rule2(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { + "addConditionalFormatRule": { + "rule": { + "ranges":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "booleanRule": { + "condition": {"type": "NOT_BLANK"}, + "format": { + "backgroundColor": { + "red": 0.8, + "blue": 0.8, + "green": 1 + } + } + } + }, + "index": 0 + } + } + return request_body + +# Altera o tamanho das colunas comecando na posicao "startIndex" e temrinando na posicao +# endIndex para size +def change_size_column(sheet_id , startIndex , endIndex , size): + request_body = { + "updateDimensionProperties": { + "range": { + "sheetId": sheet_id, + "dimension": "COLUMNS", + "startIndex": startIndex, + "endIndex": endIndex + }, + "properties": { + "pixelSize": size + }, + "fields": "pixelSize" + } + } + return request_body + +# Altera o tamanho das linhas comecando na posicao "startIndex" e temrinando na posicao +# endIndex para size +def change_size_row(sheet_id , startIndex , endIndex , size): + request_body = { + "updateDimensionProperties": { + "range": { + "sheetId": sheet_id, + "dimension": "ROWS", + "startIndex": startIndex, + "endIndex": endIndex + }, + "properties": { + "pixelSize": size + }, + "fields": "pixelSize" + } + } + return request_body + +# Altera o texto para ficar em negrito +# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +def bold_cells(sheet_id , pos1 , pos2 , pos3 , pos4): + request_body = { + "repeatCell": { + "range":{ + "sheetId": sheet_id, + "startRowIndex": pos1, + "endRowIndex": pos3, + "startColumnIndex": pos2, + "endColumnIndex": pos4 + }, + "cell": { + "userEnteredFormat": { + "textFormat": { + "bold" : True + } + } + }, + "fields": "userEnteredFormat.textFormat" + } + } + return request_body From e1146f087226556be909b7c51b0c8b9b640fc386 Mon Sep 17 00:00:00 2001 From: caiocbr <38052450+caiocbr@users.noreply.github.com> Date: Mon, 22 Feb 2021 17:48:03 -0300 Subject: [PATCH 07/26] Delete Func_GSAPI.py --- Func_GSAPI.py | 323 -------------------------------------------------- 1 file changed, 323 deletions(-) delete mode 100644 Func_GSAPI.py diff --git a/Func_GSAPI.py b/Func_GSAPI.py deleted file mode 100644 index d8ea930..0000000 --- a/Func_GSAPI.py +++ /dev/null @@ -1,323 +0,0 @@ -# Todas as funcoes apenas compoem um request, apos usa-las e necessarios executar -# a seguinte linha de codigo para que as alteracoes sejam aplicadas: -# requests.append(func) -# body = {"requests":requests} -# spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() - -# Insere uma "num" linhas na linha de numero "start_index" -def insert_rows(sheet_id , start_index , num): - request_body = { - "insertDimension": { - "range": { - "sheetId": sheet_id , - "dimension": "ROWS", - "startIndex": start_index, - "endIndex": num - } - } - } -return request_body - -# Junta as linhas -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def merge_columns(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "mergeCells": { - "range": { - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "mergeType": "MERGE_COLUMNS" - } - } -return request_body - -# Junta as colunas -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def merge_rows(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "mergeCells": { - "range": { - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "mergeType": "MERGE_ROWS" - } - } -return request_body - -# Centraliza o texto -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def centralize_cells(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "repeatCell": - { - "cell": - { - "userEnteredFormat": - { - "horizontalAlignment": "CENTER" , - "verticalAlignment": "MIDDLE" - } - }, - "range": - { - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "fields": "userEnteredFormat" - } - } -return request_body - -# Adiciona um texto(name) e uma url(url) na celula (pos1,pos2) -def add_hyperlink(sheet_id , pos1 , pos2 , name , url): - request_body = { - "updateCells": - { - "rows": - { - "values": { - "userEnteredValue": { - "formulaValue":'=HYPERLINK("{}";"{}")'.format(url,name) - } - } - } - , - "fields": "userEnteredValue", - "start": { - "sheetId": sheet_id, - "rowIndex": pos1, - "columnIndex": pos2 - } - } - } -return request_body - -# Escreve "value" na celula (pos1,pos2) -def add_value(sheet_id , pos1 , pos2 , value): - request_body = { - "updateCells": - { - "rows": - { - "values": { - "userEnteredValue": { - "stringValue":value - } - } - }, - "fields": "userEnteredValue", - "start": { - "sheetId": sheet_id, - "rowIndex": pos1, - "columnIndex": pos2 - } - } - } -return request_body - -# Realca apenas as bordas externas -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def border_cell(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "updateBorders": { - "range":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "top": {"style":"SOLID"}, - "bottom": {"style":"SOLID"}, - "left": {"style":"SOLID"}, - "right": {"style":"SOLID"} - } - } -return request_body - -# Realca todas as bordas -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def border_all_cells(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "repeatCell": { - "range":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "cell": { - "userEnteredFormat": { - "borders": { - "top": {"style":"SOLID"}, - "bottom": {"style":"SOLID"}, - "left": {"style":"SOLID"}, - "right": {"style":"SOLID"} - } - } - }, - "fields": "userEnteredFormat.borders" - } - } -return request_body - -# Muda a cor do texto -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -# para o sistema rgb,com cada parametro variando de [0,1] -def change_color(sheet_id , pos1 , pos2 , pos3 , pos4 , red , green , blue): - request_body = { - "repeatCell": { - "range":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "cell": { - "userEnteredFormat": { - "textFormat": { - "foregroundColor": { - "red": red, - "green": green, - "blue": blue - } - } - } - }, - "fields": "userEnteredFormat.textFormat" - } - } -return request_body - -# Add a regra de deixar vermelho se estiver em branco -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def add_condition_rule1(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "addConditionalFormatRule": { - "rule": { - "ranges":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "booleanRule": { - "condition": {"type": "BLANK"}, - "format": { - "backgroundColor": { - "red": 1, - "blue": 0.8, - "green": 0.8 - } - } - } - }, - "index": 0 - } - } -return request_body - -# Add a regra de deixar verde se nao estiver vazio -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def add_condition_rule2(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "addConditionalFormatRule": { - "rule": { - "ranges":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "booleanRule": { - "condition": {"type": "NOT_BLANK"}, - "format": { - "backgroundColor": { - "red": 0.8, - "blue": 0.8, - "green": 1 - } - } - } - }, - "index": 0 - } - } -return request_body - -# Altera o tamanho das colunas comecando na posicao "startIndex" e temrinando na posicao -# endIndex para size -def change_size_column(sheet_id , startIndex , endIndex , size): - request_body = { - "updateDimensionProperties": { - "range": { - "sheetId": sheet_id, - "dimension": "COLUMNS", - "startIndex": startIndex, - "endIndex": endIndex - }, - "properties": { - "pixelSize": size - }, - "fields": "pixelSize" - } - } -return request_body - -# Altera o tamanho das linhas comecando na posicao "startIndex" e temrinando na posicao -# endIndex para size -def change_size_row(sheet_id , startIndex , endIndex , size): - request_body = { - "updateDimensionProperties": { - "range": { - "sheetId": sheet_id, - "dimension": "ROWS", - "startIndex": startIndex, - "endIndex": endIndex - }, - "properties": { - "pixelSize": size - }, - "fields": "pixelSize" - } - } -return request_body - -# Altera o texto para ficar em negrito -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def bold_cells(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "repeatCell": { - "range":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "cell": { - "userEnteredFormat": { - "textFormat": { - "bold" : True - } - } - }, - "fields": "userEnteredFormat.textFormat" - } - } -return request_body From 726725360ca5a5f1960841fa6cbbbd57f51471ac Mon Sep 17 00:00:00 2001 From: caiocbr <38052450+caiocbr@users.noreply.github.com> Date: Mon, 22 Feb 2021 17:48:11 -0300 Subject: [PATCH 08/26] Delete Insert_Contest.py --- Insert_Contest.py | 62 ----------------------------------------------- 1 file changed, 62 deletions(-) delete mode 100644 Insert_Contest.py diff --git a/Insert_Contest.py b/Insert_Contest.py deleted file mode 100644 index 697192a..0000000 --- a/Insert_Contest.py +++ /dev/null @@ -1,62 +0,0 @@ -from googleapiclient.discovery import build -from google.oauth2 import service_account -from Func_GSAPI import * - -#Define o escopo e as credenciais do bot -SCOPES = ['https://www.googleapis.com/auth/spreadsheets'] -SERVICE_ACCOUNT_FILE = 'credenciais.json' - -#Define o ID da planilha -SAMPLE_SPREADSHEET_ID = "15ftB4dwmhDC4eeBR0Redw-BSuqS2elypdFX1I5DauI8" - -num_usuarios = 5 - -class Contest: - name , link , editorial_link , code , date , num_question = "" , "" , "" , "" , "" , 0 - def __init__(self , name , link , editorial_link , code , date , num_question): - self.name = name - self.link = link - self.editorial_link = editorial_link - self.code = code - self.date = date - self.num_question = num_question - -def insert_contest(spreadsheet , sheet_id , contest): - - requests = [] - - requests.append(insert_rows(sheet_id,4,4+contest.num_question)) - requests.append(merge_columns(sheet_id,4,0,4+contest.num_question,4)) - - requests.append(add_hyperlink(sheet_id,4,0,contest.name,contest.link)) - if contest.editorial_link != "": - requests.append(add_hyperlink(sheet_id,4,1,"Editorial",contest.editorial_link)) - - requests.append(add_value(sheet_id,4,2,contest.code)) - requests.append(add_value(sheet_id,4,3,contest.date)) - for i in range(0,contest.num_question): - requests.append(add_value(sheet_id,4+i,4,chr(65+i))) - - requests.append(centralize_cells(sheet_id,4,0,4+contest.num_question,5+num_usuarios)) - requests.append(border_all_cells(sheet_id,4,0,4+contest.num_question,5+num_usuarios)) - - requests.append(change_color(sheet_id,4,0,4+contest.num_question,2,0,0,0)) - - body = {"requests":requests} - spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() - - -def main(): - creds = None - creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES) - - service = build('sheets', 'v4', credentials=creds) - spreadsheet = service.spreadsheets() - - teste = Contest("caio","caio","caio","caio","caio",3) - insert_contest(spreadsheet,0,teste) - - -if __name__ == '__main__': - main() - From f785b3f904447a959b95ac69a4e1bfb791bbe9db Mon Sep 17 00:00:00 2001 From: caiocbr Date: Mon, 22 Feb 2021 20:35:17 -0300 Subject: [PATCH 09/26] Renomeando variaveis --- google_sheets_utilities.py | 103 ++++++++++++++++++------------------- 1 file changed, 51 insertions(+), 52 deletions(-) diff --git a/google_sheets_utilities.py b/google_sheets_utilities.py index 31d282b..9541452 100644 --- a/google_sheets_utilities.py +++ b/google_sheets_utilities.py @@ -94,16 +94,15 @@ def insert_rows(sheet_id , start_index , num): return request_body # Junta as linhas -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def merge_columns(sheet_id , pos1 , pos2 , pos3 , pos4): +def merge_columns(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): request_body = { "mergeCells": { "range": { "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 + "startRowIndex": startRowIndex, + "endRowIndex": endRowIndex, + "startColumnIndex": startColumnIndex, + "endColumnIndex": endColumnIndex }, "mergeType": "MERGE_COLUMNS" } @@ -112,15 +111,15 @@ def merge_columns(sheet_id , pos1 , pos2 , pos3 , pos4): # Junta as colunas # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def merge_rows(sheet_id , pos1 , pos2 , pos3 , pos4): +def merge_rows(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): request_body = { "mergeCells": { "range": { "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 + "startRowIndex": startRowIndex, + "endRowIndex": endRowIndex, + "startColumnIndex": startColumnIndex, + "endColumnIndex": endColumnIndex }, "mergeType": "MERGE_ROWS" } @@ -129,7 +128,7 @@ def merge_rows(sheet_id , pos1 , pos2 , pos3 , pos4): # Centraliza o texto # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def centralize_cells(sheet_id , pos1 , pos2 , pos3 , pos4): +def centralize_cells(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): request_body = { "repeatCell": { @@ -144,10 +143,10 @@ def centralize_cells(sheet_id , pos1 , pos2 , pos3 , pos4): "range": { "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 + "startRowIndex": startRowIndex, + "endRowIndex": endRowIndex, + "startColumnIndex": startColumnIndex, + "endColumnIndex": endColumnIndex }, "fields": "userEnteredFormat" } @@ -155,7 +154,7 @@ def centralize_cells(sheet_id , pos1 , pos2 , pos3 , pos4): return request_body # Adiciona um texto(name) e uma url(url) na celula (pos1,pos2) -def add_hyperlink(sheet_id , pos1 , pos2 , name , url): +def add_hyperlink(sheet_id , rowIndex , columnIndex , name , url): request_body = { "updateCells": { @@ -171,15 +170,15 @@ def add_hyperlink(sheet_id , pos1 , pos2 , name , url): "fields": "userEnteredValue", "start": { "sheetId": sheet_id, - "rowIndex": pos1, - "columnIndex": pos2 + "rowIndex": rowIndex, + "columnIndex": columnIndex } } } return request_body # Escreve "value" na celula (pos1,pos2) -def add_value(sheet_id , pos1 , pos2 , value): +def add_value(sheet_id , rowIndex , columnIndex , value): request_body = { "updateCells": { @@ -194,8 +193,8 @@ def add_value(sheet_id , pos1 , pos2 , value): "fields": "userEnteredValue", "start": { "sheetId": sheet_id, - "rowIndex": pos1, - "columnIndex": pos2 + "rowIndex": rowIndex, + "columnIndex": columnIndex } } } @@ -203,15 +202,15 @@ def add_value(sheet_id , pos1 , pos2 , value): # Realca apenas as bordas externas # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def border_cell(sheet_id , pos1 , pos2 , pos3 , pos4): +def border_cell(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): request_body = { "updateBorders": { "range":{ "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 + "startRowIndex": startRowIndex, + "endRowIndex": endRowIndex, + "startColumnIndex": startColumnIndex, + "endColumnIndex": endColumnIndex }, "top": {"style":"SOLID"}, "bottom": {"style":"SOLID"}, @@ -223,15 +222,15 @@ def border_cell(sheet_id , pos1 , pos2 , pos3 , pos4): # Realca todas as bordas # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def border_all_cells(sheet_id , pos1 , pos2 , pos3 , pos4): +def border_all_cells(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): request_body = { "repeatCell": { "range":{ "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 + "startRowIndex": startRowIndex, + "endRowIndex": endRowIndex, + "startColumnIndex": startColumnIndex, + "endColumnIndex": endColumnIndex }, "cell": { "userEnteredFormat": { @@ -251,15 +250,15 @@ def border_all_cells(sheet_id , pos1 , pos2 , pos3 , pos4): # Muda a cor do texto # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) # para o sistema rgb,com cada parametro variando de [0,1] -def change_color(sheet_id , pos1 , pos2 , pos3 , pos4 , red , green , blue): +def change_color(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex , red , green , blue): request_body = { "repeatCell": { "range":{ "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 + "startRowIndex": startRowIndex, + "endRowIndex": endRowIndex, + "startColumnIndex": startColumnIndex, + "endColumnIndex": endColumnIndex }, "cell": { "userEnteredFormat": { @@ -279,16 +278,16 @@ def change_color(sheet_id , pos1 , pos2 , pos3 , pos4 , red , green , blue): # Add a regra de deixar vermelho se estiver em branco # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def add_condition_rule1(sheet_id , pos1 , pos2 , pos3 , pos4): +def add_condition_rule1(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): request_body = { "addConditionalFormatRule": { "rule": { "ranges":{ "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 + "startRowIndex": startRowIndex, + "endRowIndex": endRowIndex, + "startColumnIndex": startColumnIndex, + "endColumnIndex": endColumnIndex }, "booleanRule": { "condition": {"type": "BLANK"}, @@ -308,16 +307,16 @@ def add_condition_rule1(sheet_id , pos1 , pos2 , pos3 , pos4): # Add a regra de deixar verde se nao estiver vazio # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def add_condition_rule2(sheet_id , pos1 , pos2 , pos3 , pos4): +def add_condition_rule2(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): request_body = { "addConditionalFormatRule": { "rule": { "ranges":{ "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 + "startRowIndex": startRowIndex, + "endRowIndex": endRowIndex, + "startColumnIndex": startColumnIndex, + "endColumnIndex": endColumnIndex }, "booleanRule": { "condition": {"type": "NOT_BLANK"}, @@ -375,15 +374,15 @@ def change_size_row(sheet_id , startIndex , endIndex , size): # Altera o texto para ficar em negrito # num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def bold_cells(sheet_id , pos1 , pos2 , pos3 , pos4): +def bold_cells(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): request_body = { "repeatCell": { "range":{ "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 + "startRowIndex": startRowIndex, + "endRowIndex": endRowIndex, + "startColumnIndex": startColumnIndex, + "endColumnIndex": endColumnIndex }, "cell": { "userEnteredFormat": { From e6dc5b50b7a678db3466d402d7f4995828f0e87c Mon Sep 17 00:00:00 2001 From: caiocbr Date: Sun, 28 Feb 2021 21:17:41 -0300 Subject: [PATCH 10/26] Adicao de utilities para o google sheets --- google_sheets_utilities.py | 120 +++++++++++-------------------------- 1 file changed, 34 insertions(+), 86 deletions(-) diff --git a/google_sheets_utilities.py b/google_sheets_utilities.py index 9541452..bea7d86 100644 --- a/google_sheets_utilities.py +++ b/google_sheets_utilities.py @@ -1,78 +1,3 @@ -# ID de coluna (comecando por 0) -> notacao A1 (ate ZZ) -def int_to_column(id): - if id < 26: - return chr(ord('A') + id) - else: - return chr(ord('A') + int(id / 26) - 1) + chr(ord('A') + id - int(id / 26) * 26) - -def get_cells(sheet, SAMPLE_SPREADSHEET_ID, range): - request = sheet.values().get( - spreadsheetId = SAMPLE_SPREADSHEET_ID, - range = range - ).execute() - return request.get('values',[]) - -def get_user_column(sheet, SAMPLE_SPREADSHEET_ID, user_name): - users = get_cells(sheet, SAMPLE_SPREADSHEET_ID, "p1!H2:ZZ2") - column = 7 - user_column = 1000 - - for i in users: - for j in i: - if j == user_name: - user_column = column - column = column + 1 - - return user_column - -def get_contest_first_row(sheet, SAMPLE_SPREADSHEET_ID, contest_name): - contests = get_cells(sheet, SAMPLE_SPREADSHEET_ID, "p1!A4:A5000") - row = 4 - contest_first_row = 5000 - - for i in contests: - for j in i: - if j == contest_name: - contest_first_row = row - row = row + 1 - - return contest_first_row - -def get_contest_last_row(sheet, SAMPLE_SPREADSHEET_ID, contest_name): - contests = get_cells(sheet, SAMPLE_SPREADSHEET_ID, "p1!A4:A5000") - row = 4 - aux = False - contest_last_row = 5000 - - for i in contests: - for j in i: - if j == contest_name: - aux = True - elif aux: - contest_last_row = row - break - if contest_last_row < 5000: - break - row = row + 1 - - return contest_last_row - -def get_problem_row(sheet, SAMPLE_SPREADSHEET_ID, contest_first_row, contest_last_row, problem_name): - problems = get_cells(sheet, - SAMPLE_SPREADSHEET_ID, - "p1!G" + str(contest_first_row) + ":G" + str(contest_last_row-1) - ) - row = contest_first_row - problem_row = 5000 - - for i in problems: - for j in i: - if j == problem_name: - problem_row = row - row = row + 1 - - return problem_row - # Todas as funcoes apenas compoem um request, apos usa-las e necessarios executar # a seguinte linha de codigo para que as alteracoes sejam aplicadas: # requests.append(func) @@ -110,7 +35,7 @@ def merge_columns(sheet_id , startRowIndex , startColumnIndex , endRowIndex , en return request_body # Junta as colunas -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) def merge_rows(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): request_body = { "mergeCells": { @@ -127,7 +52,7 @@ def merge_rows(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endCo return request_body # Centraliza o texto -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) def centralize_cells(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): request_body = { "repeatCell": @@ -153,7 +78,7 @@ def centralize_cells(sheet_id , startRowIndex , startColumnIndex , endRowIndex , } return request_body -# Adiciona um texto(name) e uma url(url) na celula (pos1,pos2) +# Adiciona um texto(name) e uma url(url) na celula (rowIndex,columnIndex) def add_hyperlink(sheet_id , rowIndex , columnIndex , name , url): request_body = { "updateCells": @@ -177,7 +102,7 @@ def add_hyperlink(sheet_id , rowIndex , columnIndex , name , url): } return request_body -# Escreve "value" na celula (pos1,pos2) +# Escreve "value" na celula (rowIndex,columnIndex) def add_value(sheet_id , rowIndex , columnIndex , value): request_body = { "updateCells": @@ -186,7 +111,7 @@ def add_value(sheet_id , rowIndex , columnIndex , value): { "values": { "userEnteredValue": { - "stringValue":value + "stringValue": value } } }, @@ -201,7 +126,7 @@ def add_value(sheet_id , rowIndex , columnIndex , value): return request_body # Realca apenas as bordas externas -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) def border_cell(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): request_body = { "updateBorders": { @@ -221,7 +146,7 @@ def border_cell(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endC return request_body # Realca todas as bordas -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) def border_all_cells(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): request_body = { "repeatCell": { @@ -248,7 +173,7 @@ def border_all_cells(sheet_id , startRowIndex , startColumnIndex , endRowIndex , return request_body # Muda a cor do texto -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) # para o sistema rgb,com cada parametro variando de [0,1] def change_color(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex , red , green , blue): request_body = { @@ -277,7 +202,7 @@ def change_color(sheet_id , startRowIndex , startColumnIndex , endRowIndex , end return request_body # Add a regra de deixar vermelho se estiver em branco -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) def add_condition_rule1(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): request_body = { "addConditionalFormatRule": { @@ -306,7 +231,7 @@ def add_condition_rule1(sheet_id , startRowIndex , startColumnIndex , endRowInde return request_body # Add a regra de deixar verde se nao estiver vazio -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) def add_condition_rule2(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): request_body = { "addConditionalFormatRule": { @@ -373,7 +298,7 @@ def change_size_row(sheet_id , startIndex , endIndex , size): return request_body # Altera o texto para ficar em negrito -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) +# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) def bold_cells(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): request_body = { "repeatCell": { @@ -395,3 +320,26 @@ def bold_cells(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endCo } } return request_body + +# Adiciona uma formula na celula de posicao (rowIndex,columnIndex) com o valor "value" +def add_formula_value(sheet_id , rowIndex , columnIndex , value): + request_body = { + "updateCells": + { + "rows": + { + "values": { + "userEnteredValue" : { + "formulaValue" : value + } + } + }, + "fields": "userEnteredValue", + "start": { + "sheetId": sheet_id, + "rowIndex": rowIndex, + "columnIndex": columnIndex + } + } + } + return request_body From 8cfd39143f32cd1575d333f4426bf299a69906b4 Mon Sep 17 00:00:00 2001 From: caiocbr Date: Mon, 1 Mar 2021 11:00:02 -0300 Subject: [PATCH 11/26] Adicionei funcoes ao sheets utility --- google_sheets_utilities.py | 53 +++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/google_sheets_utilities.py b/google_sheets_utilities.py index bea7d86..961ed66 100644 --- a/google_sheets_utilities.py +++ b/google_sheets_utilities.py @@ -4,8 +4,8 @@ # body = {"requests":requests} # spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() -# Insere uma "num" linhas na linha de numero "start_index" def insert_rows(sheet_id , start_index , num): + '''Insere uma "num" linhas na linha de numero "start_index"''' request_body = { "insertDimension": { "range": { @@ -18,8 +18,9 @@ def insert_rows(sheet_id , start_index , num): } return request_body -# Junta as linhas def merge_columns(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): + '''Junta as linhas num grid com o canto superior esquerdo em + (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' request_body = { "mergeCells": { "range": { @@ -34,9 +35,9 @@ def merge_columns(sheet_id , startRowIndex , startColumnIndex , endRowIndex , en } return request_body -# Junta as colunas -# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) def merge_rows(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): + '''Junta as colunas num grid com o canto superior esquerdo em + (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' request_body = { "mergeCells": { "range": { @@ -51,9 +52,9 @@ def merge_rows(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endCo } return request_body -# Centraliza o texto -# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) def centralize_cells(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): + '''Centraliza o texto num grid com o canto superior esquerdo em + (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' request_body = { "repeatCell": { @@ -78,8 +79,8 @@ def centralize_cells(sheet_id , startRowIndex , startColumnIndex , endRowIndex , } return request_body -# Adiciona um texto(name) e uma url(url) na celula (rowIndex,columnIndex) def add_hyperlink(sheet_id , rowIndex , columnIndex , name , url): + '''Adiciona um texto(name) e uma url(url) na celula (rowIndex,columnIndex)''' request_body = { "updateCells": { @@ -102,8 +103,8 @@ def add_hyperlink(sheet_id , rowIndex , columnIndex , name , url): } return request_body -# Escreve "value" na celula (rowIndex,columnIndex) def add_value(sheet_id , rowIndex , columnIndex , value): + '''Escreve "value" na celula (rowIndex,columnIndex)''' request_body = { "updateCells": { @@ -125,9 +126,9 @@ def add_value(sheet_id , rowIndex , columnIndex , value): } return request_body -# Realca apenas as bordas externas -# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) def border_cell(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): + '''Realca apenas as bordas externas num grid com o canto superior esquerdo em + (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' request_body = { "updateBorders": { "range":{ @@ -145,9 +146,9 @@ def border_cell(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endC } return request_body -# Realca todas as bordas -# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) def border_all_cells(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): + '''Realca todas as bordas num grid com o canto superior esquerdo em + (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' request_body = { "repeatCell": { "range":{ @@ -172,10 +173,10 @@ def border_all_cells(sheet_id , startRowIndex , startColumnIndex , endRowIndex , } return request_body -# Muda a cor do texto -# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) -# para o sistema rgb,com cada parametro variando de [0,1] def change_color(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex , red , green , blue): + '''Muda a cor do texto num grid com o canto superior esquerdo em + (startRow,startColumn) e canto inferior direito em (endRow,endColumn) + para o sistema rgb,com cada parametro variando de [0,1]''' request_body = { "repeatCell": { "range":{ @@ -201,9 +202,9 @@ def change_color(sheet_id , startRowIndex , startColumnIndex , endRowIndex , end } return request_body -# Add a regra de deixar vermelho se estiver em branco -# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) def add_condition_rule1(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): + '''Add a regra de deixar vermelho se estiver em branco num grid com o canto superior + esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' request_body = { "addConditionalFormatRule": { "rule": { @@ -230,9 +231,9 @@ def add_condition_rule1(sheet_id , startRowIndex , startColumnIndex , endRowInde } return request_body -# Add a regra de deixar verde se nao estiver vazio -# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) def add_condition_rule2(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): + '''Add a regra de deixar verde se nao estiver vazio num grid com o canto superior + esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' request_body = { "addConditionalFormatRule": { "rule": { @@ -259,9 +260,9 @@ def add_condition_rule2(sheet_id , startRowIndex , startColumnIndex , endRowInde } return request_body -# Altera o tamanho das colunas comecando na posicao "startIndex" e temrinando na posicao -# endIndex para size def change_size_column(sheet_id , startIndex , endIndex , size): + '''Altera o tamanho das colunas comecando na posicao "startIndex" e temrinando na posicao + endIndex para size''' request_body = { "updateDimensionProperties": { "range": { @@ -278,9 +279,9 @@ def change_size_column(sheet_id , startIndex , endIndex , size): } return request_body -# Altera o tamanho das linhas comecando na posicao "startIndex" e temrinando na posicao -# endIndex para size def change_size_row(sheet_id , startIndex , endIndex , size): + '''Altera o tamanho das linhas comecando na posicao "startIndex" e temrinando na posicao + endIndex para size''' request_body = { "updateDimensionProperties": { "range": { @@ -297,9 +298,9 @@ def change_size_row(sheet_id , startIndex , endIndex , size): } return request_body -# Altera o texto para ficar em negrito -# num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) def bold_cells(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endColumnIndex): + '''Altera o texto para ficar em negrito num grid com o canto superior esquerdo em + (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' request_body = { "repeatCell": { "range":{ @@ -321,8 +322,8 @@ def bold_cells(sheet_id , startRowIndex , startColumnIndex , endRowIndex , endCo } return request_body -# Adiciona uma formula na celula de posicao (rowIndex,columnIndex) com o valor "value" def add_formula_value(sheet_id , rowIndex , columnIndex , value): + '''Adiciona uma formula na celula de posicao (rowIndex,columnIndex) com o valor "value"''' request_body = { "updateCells": { From adccf52b8f473d5aa65ec88336ff4eb932704579 Mon Sep 17 00:00:00 2001 From: caiocbr <38052450+caiocbr@users.noreply.github.com> Date: Mon, 1 Mar 2021 11:01:11 -0300 Subject: [PATCH 12/26] Delete google_sheets_utilities.py --- google_sheets_utilities.py | 398 ------------------------------------- 1 file changed, 398 deletions(-) delete mode 100644 google_sheets_utilities.py diff --git a/google_sheets_utilities.py b/google_sheets_utilities.py deleted file mode 100644 index 31d282b..0000000 --- a/google_sheets_utilities.py +++ /dev/null @@ -1,398 +0,0 @@ -# ID de coluna (comecando por 0) -> notacao A1 (ate ZZ) -def int_to_column(id): - if id < 26: - return chr(ord('A') + id) - else: - return chr(ord('A') + int(id / 26) - 1) + chr(ord('A') + id - int(id / 26) * 26) - -def get_cells(sheet, SAMPLE_SPREADSHEET_ID, range): - request = sheet.values().get( - spreadsheetId = SAMPLE_SPREADSHEET_ID, - range = range - ).execute() - return request.get('values',[]) - -def get_user_column(sheet, SAMPLE_SPREADSHEET_ID, user_name): - users = get_cells(sheet, SAMPLE_SPREADSHEET_ID, "p1!H2:ZZ2") - column = 7 - user_column = 1000 - - for i in users: - for j in i: - if j == user_name: - user_column = column - column = column + 1 - - return user_column - -def get_contest_first_row(sheet, SAMPLE_SPREADSHEET_ID, contest_name): - contests = get_cells(sheet, SAMPLE_SPREADSHEET_ID, "p1!A4:A5000") - row = 4 - contest_first_row = 5000 - - for i in contests: - for j in i: - if j == contest_name: - contest_first_row = row - row = row + 1 - - return contest_first_row - -def get_contest_last_row(sheet, SAMPLE_SPREADSHEET_ID, contest_name): - contests = get_cells(sheet, SAMPLE_SPREADSHEET_ID, "p1!A4:A5000") - row = 4 - aux = False - contest_last_row = 5000 - - for i in contests: - for j in i: - if j == contest_name: - aux = True - elif aux: - contest_last_row = row - break - if contest_last_row < 5000: - break - row = row + 1 - - return contest_last_row - -def get_problem_row(sheet, SAMPLE_SPREADSHEET_ID, contest_first_row, contest_last_row, problem_name): - problems = get_cells(sheet, - SAMPLE_SPREADSHEET_ID, - "p1!G" + str(contest_first_row) + ":G" + str(contest_last_row-1) - ) - row = contest_first_row - problem_row = 5000 - - for i in problems: - for j in i: - if j == problem_name: - problem_row = row - row = row + 1 - - return problem_row - -# Todas as funcoes apenas compoem um request, apos usa-las e necessarios executar -# a seguinte linha de codigo para que as alteracoes sejam aplicadas: -# requests.append(func) -# body = {"requests":requests} -# spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() - -# Insere uma "num" linhas na linha de numero "start_index" -def insert_rows(sheet_id , start_index , num): - request_body = { - "insertDimension": { - "range": { - "sheetId": sheet_id , - "dimension": "ROWS", - "startIndex": start_index, - "endIndex": num - } - } - } - return request_body - -# Junta as linhas -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def merge_columns(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "mergeCells": { - "range": { - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "mergeType": "MERGE_COLUMNS" - } - } - return request_body - -# Junta as colunas -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def merge_rows(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "mergeCells": { - "range": { - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "mergeType": "MERGE_ROWS" - } - } - return request_body - -# Centraliza o texto -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def centralize_cells(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "repeatCell": - { - "cell": - { - "userEnteredFormat": - { - "horizontalAlignment": "CENTER" , - "verticalAlignment": "MIDDLE" - } - }, - "range": - { - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "fields": "userEnteredFormat" - } - } - return request_body - -# Adiciona um texto(name) e uma url(url) na celula (pos1,pos2) -def add_hyperlink(sheet_id , pos1 , pos2 , name , url): - request_body = { - "updateCells": - { - "rows": - { - "values": { - "userEnteredValue": { - "formulaValue":'=HYPERLINK("{}";"{}")'.format(url,name) - } - } - } - , - "fields": "userEnteredValue", - "start": { - "sheetId": sheet_id, - "rowIndex": pos1, - "columnIndex": pos2 - } - } - } - return request_body - -# Escreve "value" na celula (pos1,pos2) -def add_value(sheet_id , pos1 , pos2 , value): - request_body = { - "updateCells": - { - "rows": - { - "values": { - "userEnteredValue": { - "stringValue":value - } - } - }, - "fields": "userEnteredValue", - "start": { - "sheetId": sheet_id, - "rowIndex": pos1, - "columnIndex": pos2 - } - } - } - return request_body - -# Realca apenas as bordas externas -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def border_cell(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "updateBorders": { - "range":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "top": {"style":"SOLID"}, - "bottom": {"style":"SOLID"}, - "left": {"style":"SOLID"}, - "right": {"style":"SOLID"} - } - } - return request_body - -# Realca todas as bordas -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def border_all_cells(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "repeatCell": { - "range":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "cell": { - "userEnteredFormat": { - "borders": { - "top": {"style":"SOLID"}, - "bottom": {"style":"SOLID"}, - "left": {"style":"SOLID"}, - "right": {"style":"SOLID"} - } - } - }, - "fields": "userEnteredFormat.borders" - } - } - return request_body - -# Muda a cor do texto -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -# para o sistema rgb,com cada parametro variando de [0,1] -def change_color(sheet_id , pos1 , pos2 , pos3 , pos4 , red , green , blue): - request_body = { - "repeatCell": { - "range":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "cell": { - "userEnteredFormat": { - "textFormat": { - "foregroundColor": { - "red": red, - "green": green, - "blue": blue - } - } - } - }, - "fields": "userEnteredFormat.textFormat" - } - } - return request_body - -# Add a regra de deixar vermelho se estiver em branco -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def add_condition_rule1(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "addConditionalFormatRule": { - "rule": { - "ranges":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "booleanRule": { - "condition": {"type": "BLANK"}, - "format": { - "backgroundColor": { - "red": 1, - "blue": 0.8, - "green": 0.8 - } - } - } - }, - "index": 0 - } - } - return request_body - -# Add a regra de deixar verde se nao estiver vazio -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def add_condition_rule2(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "addConditionalFormatRule": { - "rule": { - "ranges":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "booleanRule": { - "condition": {"type": "NOT_BLANK"}, - "format": { - "backgroundColor": { - "red": 0.8, - "blue": 0.8, - "green": 1 - } - } - } - }, - "index": 0 - } - } - return request_body - -# Altera o tamanho das colunas comecando na posicao "startIndex" e temrinando na posicao -# endIndex para size -def change_size_column(sheet_id , startIndex , endIndex , size): - request_body = { - "updateDimensionProperties": { - "range": { - "sheetId": sheet_id, - "dimension": "COLUMNS", - "startIndex": startIndex, - "endIndex": endIndex - }, - "properties": { - "pixelSize": size - }, - "fields": "pixelSize" - } - } - return request_body - -# Altera o tamanho das linhas comecando na posicao "startIndex" e temrinando na posicao -# endIndex para size -def change_size_row(sheet_id , startIndex , endIndex , size): - request_body = { - "updateDimensionProperties": { - "range": { - "sheetId": sheet_id, - "dimension": "ROWS", - "startIndex": startIndex, - "endIndex": endIndex - }, - "properties": { - "pixelSize": size - }, - "fields": "pixelSize" - } - } - return request_body - -# Altera o texto para ficar em negrito -# num grid com o canto superior esquerdo em (pos1,pos2) e canto inferior direito em (pos3,pos4) -def bold_cells(sheet_id , pos1 , pos2 , pos3 , pos4): - request_body = { - "repeatCell": { - "range":{ - "sheetId": sheet_id, - "startRowIndex": pos1, - "endRowIndex": pos3, - "startColumnIndex": pos2, - "endColumnIndex": pos4 - }, - "cell": { - "userEnteredFormat": { - "textFormat": { - "bold" : True - } - } - }, - "fields": "userEnteredFormat.textFormat" - } - } - return request_body From 882ad973a4a8e806c468191ef6f4a583859ed96d Mon Sep 17 00:00:00 2001 From: caiocbr Date: Mon, 1 Mar 2021 11:02:05 -0300 Subject: [PATCH 13/26] adicionei funcoes ao sheets utilities --- google_sheets_utilities.pyc | Bin 0 -> 8367 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 google_sheets_utilities.pyc diff --git a/google_sheets_utilities.pyc b/google_sheets_utilities.pyc new file mode 100644 index 0000000000000000000000000000000000000000..58db8aa75af086342864ec832a8c112def9a9c07 GIT binary patch literal 8367 zcmd5>U2_~q6`j?tEUj$Iv1JqE5Hb-VtSQ@y11w)oh-@oHSRbyI0>$St+HS8VnVngt zdllPQ4-{09f+~2T3MhU6RlM*!sN#pfYyJS|+@9GT%XTR?ie-)VPS0#lPj}yQ?>+Z! z{o~^^7eBu8^KMZ5)o^|XANzX<9R$A#f*+w#lSVDj6VjLnbX^+tKsTh(2=t^hCIfv$ z8b<;>C5@>-PfKGu&`oJH13e>+nLr5QpZ*5Ka%xR( z!eKuO=hI<-K1||tJF;OK`Btb+i2Ekb!g=eW+;!qqn>+JviX&_r zxF49DJBD*^elaxGb+$5n*FTS&fxQB;u$}eILN|)DgJN@)JdG?`|Wm6f!M7_piN{&;FE?0B}pOJE|;)2SV z2;#|7In>Gov;yEzM^FxRBl-yF>FBxuiN!?iLTw7mx zZ*|Q>39###&AS65P?D=_CP}Q99;(&1@o>9Ay4I*gf?KI1L@D0&~0 zC*bPa@bV)|=dRh`@r5RJd6dNWBG|Qq>&y;IyH3`>w6?jV+#F`Mo#pX8xb`SnOyXV& zPw%A5>hksLD@%^*-GL{MyVVZ7JA{K@N*!X2emBeek&~d&g*A&mc|3qPf!nc3v=t|i zn}LZOy})50NTP759Mj?S?bk6u`#A{sfeASf5l%G9$gsyBOrxLR=_hE6@gy-Eka|A| z5DfsDUjr~6UhNUS040QRAdr#10x@(2#E37@i4mIU6zvU&MICn$jw1wl52jWc^$p!V zqy8{YTKJr2#K(GuNffqV9^#uXcvmOw^WyN{`tA>JEvc2|wVSQ^U+&I-o8r90-`mhC z9{zrm42|PHRW$BzQjwSFqGA=0|DjZl>%I)A_=*|QK}2|R=;yfQge@CC31 z&WWpH{1QCeLSqje=sRjqY8402HRxP{0ic0yhETx$f;SKcyTDKb+(8J_8yI=Xc5}01 z!g*1^{JzRAs8$YgB+64E22rn4%u|f?rbgSWzQ`|Lhwzrk)$P>;@5u}fTm@vFRDp~R zD|&eQ=Ngsm=R^nbN&RIXr?l`Fb_`2CXIFM8qvpCL-ncc{f{}J7xU^0VG%=6hF{|(Bg z#t^v!lEb!sAsI>?6U<=Ie@;w%?t%H8njtDuwkdl;RSu6qDVbw56* zWx+;$lj2(xGY}rvXdFPPgErCKW>JPYZkGR(qY75RW_kEp2N|uu_IF;KtmL~RtkRXz z#i9D~Bn1$5-s=+KSwU*ZZGllqns6HXzIN&S^jx4%qtltOAN&lL@DGSZtpQwWEg}ZA ziSI;th+L&_l5N1ppkU%+T(ju0h00WSznrTCV71V4a0Qk}B}5WXrD$dam{(U8*KP_h z9cv`SPB%+6N>^EmO$0&+nBHIi!oUA~$AgCO5e#od-47}lR$t;5J|1R?iBdI0C@1Q3 zG-8|sd1)-QJaSvmt!w4$qNIR6`g%w{TUX0?NBTEfe}}Wa{BPX0uR)aF_CXBKj!^w9 zF$^es68Iz-{yWz2SPTQu0B{KImT^JXi7>x^RUaLh zCn5)wL}VP(AIJd*7;-T|CLtB2s2`2=Ef>ESJhhTXzaW&q-|W${l4$b?^{SiH%nF4tomI3Rt1`95eg~~C^0lhEP-Hr{ zkFE$O#xKDx&bCtgebN-K7C2w6E9(SBovx(Y4-^9ahL?@aR0_YsZ*RjKg_)!vF#Kia zxy;`@N6r$hu3#Nc$ASqY8D}#eno2eAS>$U(-WI0sGqsBZ2|@dyL66z*9CNhNtVd9} zg$D}f4Hqu|2UN$~#K@IeZWJO5Vac^p%mWc9efOh_xW#XUsFERtD~f^Y6%4FGidQMf z_@A=Cr!Mf>gSKF%pCot1dVP&=iRvK@t(I7;HNLeLEnkt*D$+y6AMDiUDZWf`k>YC< ztl+D+C~id>QZe`aPPg}Lc_N#LH>XJv^RHc#Sssd={f QV)Hc4FUv94oNJ!_A6!;jWB>pF literal 0 HcmV?d00001 From 5a7a1a3698f42a9a5d6a97fde1496f2e4e5643b5 Mon Sep 17 00:00:00 2001 From: caiocbr Date: Mon, 1 Mar 2021 11:04:09 -0300 Subject: [PATCH 14/26] Alterei as funcoe --- Init.py | 54 ++++++++++++++++++++++++++++++++ Insert_Contest.py | 79 ++++++++++++++++++++++++----------------------- 2 files changed, 95 insertions(+), 38 deletions(-) create mode 100644 Init.py diff --git a/Init.py b/Init.py new file mode 100644 index 0000000..58cba0e --- /dev/null +++ b/Init.py @@ -0,0 +1,54 @@ +from googleapiclient.discovery import build +from google.oauth2 import service_account +from Func_GSAPI import * + + #Define o escopo e as credenciais do bot +SCOPES = ['https://www.googleapis.com/auth/spreadsheets'] +SERVICE_ACCOUNT_FILE = 'credenciais.json' + +#Define o ID da planilha +SAMPLE_SPREADSHEET_ID = "15ftB4dwmhDC4eeBR0Redw-BSuqS2elypdFX1I5DauI8" + +def Init(spreadsheet , sheet_id): + + requests = [] + + requests.append(change_size_row(sheet_id , 1 , 2 , 100)) + + requests.append(change_size_column(sheet_id , 0 , 1 , 210)) + requests.append(change_size_column(sheet_id , 1 , 2 , 80)) + requests.append(change_size_column(sheet_id , 2 , 3 , 53)) + requests.append(change_size_column(sheet_id , 3 , 4 , 80)) + requests.append(change_size_column(sheet_id , 4 , 5 , 215)) + requests.append(change_size_column(sheet_id , 5 , 6 , 215)) + requests.append(change_size_column(sheet_id , 6 , 7 , 25)) + + requests.append(merge_rows(sheet_id , 1 , 4 , 2 , 6)) + + requests.append(add_value(sheet_id , 1 , 0 , "Contest name")) + requests.append(add_value(sheet_id , 1 , 1 , "Editorial")) + requests.append(add_value(sheet_id , 1 , 2 , "Code")) + requests.append(add_value(sheet_id , 1 , 3 , "Date")) + requests.append(add_value(sheet_id , 1 , 4 , "Subject(s)")) + + requests.append(centralize_cells(sheet_id , 1 , 0 , 2 , 6)) + requests.append(border_all_cells(sheet_id , 1 , 0 , 2 , 6)) + requests.append(bold_cells(sheet_id , 1 , 0 , 2 , 6)) + + + + + body = {"requests":requests} + spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() + +def main(): + creds = None + creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES) + + service = build('sheets', 'v4', credentials=creds) + spreadsheet = service.spreadsheets() + + Init(spreadsheet,0) + +if __name__ == '__main__': + main() diff --git a/Insert_Contest.py b/Insert_Contest.py index 697192a..aca45dd 100644 --- a/Insert_Contest.py +++ b/Insert_Contest.py @@ -1,6 +1,6 @@ from googleapiclient.discovery import build from google.oauth2 import service_account -from Func_GSAPI import * +from google_sheets_utilities import * #Define o escopo e as credenciais do bot SCOPES = ['https://www.googleapis.com/auth/spreadsheets'] @@ -12,51 +12,54 @@ num_usuarios = 5 class Contest: - name , link , editorial_link , code , date , num_question = "" , "" , "" , "" , "" , 0 - def __init__(self , name , link , editorial_link , code , date , num_question): - self.name = name - self.link = link - self.editorial_link = editorial_link - self.code = code - self.date = date - self.num_question = num_question + name , link , editorial_link , code , date , num_question = "" , "" , "" , "" , "" , 0 + def __init__(self , name , link , editorial_link , code , date , num_question): + self.name = name + self.link = link + self.editorial_link = editorial_link + self.code = code + self.date = date + self.num_question = num_question def insert_contest(spreadsheet , sheet_id , contest): - - requests = [] - - requests.append(insert_rows(sheet_id,4,4+contest.num_question)) - requests.append(merge_columns(sheet_id,4,0,4+contest.num_question,4)) - - requests.append(add_hyperlink(sheet_id,4,0,contest.name,contest.link)) - if contest.editorial_link != "": - requests.append(add_hyperlink(sheet_id,4,1,"Editorial",contest.editorial_link)) - - requests.append(add_value(sheet_id,4,2,contest.code)) - requests.append(add_value(sheet_id,4,3,contest.date)) - for i in range(0,contest.num_question): - requests.append(add_value(sheet_id,4+i,4,chr(65+i))) - - requests.append(centralize_cells(sheet_id,4,0,4+contest.num_question,5+num_usuarios)) - requests.append(border_all_cells(sheet_id,4,0,4+contest.num_question,5+num_usuarios)) - - requests.append(change_color(sheet_id,4,0,4+contest.num_question,2,0,0,0)) - - body = {"requests":requests} - spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() + + requests = [] + + requests.append(insert_rows(sheet_id,4,4+contest.num_question)) + requests.append(merge_columns(sheet_id,4,0,4+contest.num_question,4)) + + requests.append(add_hyperlink(sheet_id,4,0,contest.name,contest.link)) + if contest.editorial_link != "": + requests.append(add_hyperlink(sheet_id,4,1,"Editorial",contest.editorial_link)) + + requests.append(add_value(sheet_id,4,2,contest.code)) + requests.append(add_value(sheet_id,4,3,contest.date)) + for i in range(0,contest.num_question): + requests.append(add_value(sheet_id,4+i,4,chr(65+i))) + + requests.append(centralize_cells(sheet_id,4,0,4+contest.num_question,5+num_usuarios)) + requests.append(border_all_cells(sheet_id,4,0,4+contest.num_question,5+num_usuarios)) + + requests.append(change_color(sheet_id,4,0,4+contest.num_question,2,0,0,0)) + + string = '=CONT.SE(H5:H15;)' + requests.append(add_formula_value(sheet_id,3,7,string)) + + body = {"requests":requests} + spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() def main(): - creds = None - creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES) + creds = None + creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES) - service = build('sheets', 'v4', credentials=creds) - spreadsheet = service.spreadsheets() + service = build('sheets', 'v4', credentials=creds) + spreadsheet = service.spreadsheets() - teste = Contest("caio","caio","caio","caio","caio",3) - insert_contest(spreadsheet,0,teste) + teste = Contest("caio","caio","caio","caio","caio",3) + insert_contest(spreadsheet,0,teste) if __name__ == '__main__': - main() + main() From c3e6f2b6da45fe37b2a7c7eff0cdee4f94e95358 Mon Sep 17 00:00:00 2001 From: caiocbr Date: Mon, 1 Mar 2021 20:49:56 -0300 Subject: [PATCH 15/26] oi --- Insert_Contest.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Insert_Contest.py b/Insert_Contest.py index aca45dd..5029844 100644 --- a/Insert_Contest.py +++ b/Insert_Contest.py @@ -42,6 +42,11 @@ def insert_contest(spreadsheet , sheet_id , contest): requests.append(change_color(sheet_id,4,0,4+contest.num_question,2,0,0,0)) + result = sheet.values().get(spreadsheetId=SAMPLE_SPREADSHEET_ID, + range="p1!H4:H4").execute() + values = result.get('values', []) + print(values) + string = '=CONT.SE(H5:H15;)' requests.append(add_formula_value(sheet_id,3,7,string)) From fac37d2ef9f413bb1d6bce841e5a928306443286 Mon Sep 17 00:00:00 2001 From: caiocbr Date: Tue, 2 Mar 2021 22:37:52 -0300 Subject: [PATCH 16/26] Atualizacao da formatacao do google utilities --- google_sheets_utilities.pyc | Bin 8367 -> 9109 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/google_sheets_utilities.pyc b/google_sheets_utilities.pyc index 58db8aa75af086342864ec832a8c112def9a9c07..c953b3c94a5cabbd55a00a05019d135a3519d988 100644 GIT binary patch delta 2499 zcmbtW&2Jk;6rZ&nJ9grHxG_$mG)_WW+>#Vkr2(pb#7#^ZlGy1urKnK3j%RS(Zq{XY z+*T+hhfu+Z%c>G^0C7Y}AY_gpZu|kA~{FigrE6o1{=siV`^9g~VpTSJVmPLTQ%h*+eiJ&F|OoTKMWTH(IAtu6_ zXk#Lxi7*rGnustF)kHfJF-=67=m5d5#+c~TQyomiHPOjLmnPy&bZerEi5^XKGtsMw z9wrj3m^nZ?*8ZeV#vn=oj(z=QuhH2~l+{=(+4Vb)`-5@Ko$3$u+48N1bX2KkInq{o zE!aF62pERpP6qQv*u5V-JB6bvO5munw@Y=o zNs}#cYtpXDlDF(6nrA~12s9E0W_xHC4-;r6i#a}q(RQo6CRLD#hHZLUckc9)J0JV`(qXVY0(b`C zNdW~<@S}iZfM*FX#WHOeYI`O?9VbwjyInRL(sxcTja$ws3sKT*H<|lgI^BHKF}}w^ z=i*oQbI@<8;&v*n)NLVc?U>DGZ`XC7)9LNV@>5W167T}xMZimd(*!z^JRS~DV|K*- zzI*JrHhYZ5o{9e<{<}ivYgIN)FJvD!ou0i}kW5?%`x37u4xim45&8e*j609jDL@vW z6L0{j+46B^wQPAgU$?($rVrfl{bKaEU-X@t!1?OOAK~-xyvJjTrc^hZ0H!} zAQ#r=3(KVo3)%cUpQRDMNbp!iZ7^)D8CaYG%mKy$uK?x=YVZoU)` zYXqihdvSevwTj&imA4ni^dJpes`zols(*oXxeJ4jE@>~IQ~XUH<~X1T7zHd7c&>O{ zs!)Sp2D}Q;88n33?4KmlwK7Ix)6LY-pdY;9?E+I!f2D2;J`GNfQ`); zcHNy|3G6 z++drtPC(BM#x@D56&p-ZAEsZB(Y-1{Y(2;3;Neq(NTAq0B8?mW8t_rJ57EhdDu-zI9@>mZi6D z#iteSUGE;Ibdz@B7HU%G>&pecczGeKovO>mYjW_hZV}a*R0`dpm|a|2$d!sqJeQp* zUd-i|OLH@NOJ&v8Z%5f)L%u634J9=r)j>yh=(x8*z^}G+8m8h$(6BeKzbaKL5LL=> z2i7tpX-pVHM#9KvV2w_u+DQ4>NxOoi+K- delta 1986 zcmbuA&u-S^ z?d{cHmTpB~WKy#)7PgzL`!VSMJpKG12!gTi8QUVkP=dikL?@HCJGGQbd!lDX;X zL9E-Bcg?CdUAxnE{331m1$jR^B5x*A^7q)&&uOQtLOreYC>3$K5Tpp}D|~gO&a0o+ zcn&uoAe8CH$_Xs@_Mrd`+6Tn&4z08U;mt(bDABTybr~Nh?-O4US!-HO;5F>lw-lsh z+x~nQ4lEdn!%)oR-{$2><=`~dZxezT!D+Ou0IBYHw$4=y(aXoFKR1q$z$bwzKr4dO zQ^9AjL?}89$dpb)@0I|2*Bf@n((1D&ts6qr)!tX(*XgxAgMXCS+9!Bb9amgWSe^>} zyYOCi+o+J4J_*HzqL z;UD=M2Abj3T**(0rwh<>?dPBHd3H`~IwS8EM~$QML9w>a$&BXdX`FS_bwn#@xlY~d z*w)F1;hmA|#;w;{g(qhT0ivr^H|xu5OO;FfJoc9eyUwTp5nBt>OozG*=_qgk_>j<| zALA>)MZ)gUjrGr+N>(55Pd%4+MrP$_hn~QMu9XYbwU5^;H6DSLD1hGLD18;jPU{=X zu2E;IF|y;iJ2c8#md_8%pmgkz>dW3^sxN)IxjVZsWx8jE-R=ZS%DJ(BHs})LD*V@& z=9h4F4N#S{PSVSL+Ox{hFxp}PQ}4ePX Date: Tue, 2 Mar 2021 22:43:41 -0300 Subject: [PATCH 17/26] Correcao da formtacao do google sheets utilities --- google_sheets_utilities.pyc | Bin 9109 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 google_sheets_utilities.pyc diff --git a/google_sheets_utilities.pyc b/google_sheets_utilities.pyc deleted file mode 100644 index c953b3c94a5cabbd55a00a05019d135a3519d988..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9109 zcmd5?U2_~q6`j>e)`xA`@du7mE;1G-$icDWA}kP$V_DkRiuF}3IRO$_Mmz1**t0Xs zbgyC?`GGQ3P&~jZP^mma@yf5@kv~E4MioB*&bd9aJCbD-o5iwLd#9(Tr>DE`>3h$; zv(ul}Uz<$pssUc=XX4iVzN;>Dh~77ls8@Vp;Zys#>TAuk-3Le&dLq%iD- z2c$6Kg`-k9;DuvS81=$&DU5mHgcQcT@SqeXyzr0|4tn8XDID^`Nhuum!Xr|c^unW3 zIO2t`Na3g#9`jbGk7J0@zwtL+LCI3Q*{nhi<2!=yEWYL)h^Qj}!`_z6sD|laBDF2d zXBY>Zjd(STzlNdL9#y@qD!L!z-QR|oPmIpA-)#r}RMKrv`EitN1jbJSSMo#cqh4pJ zKV@u?*+!Iv`u>z1We*!#+xgIPOltX~RXdJC7`1g`qBOA+Y{Glyd5h&UbrQN0P9Y1D zmbOPwiZ}{8SKK*`DsP&-%1!c^MiknEs3{FXE@E(vEdA8jL%5jfpLVsejrBBq;5tF2 zXRbh8+DO~_QZtCsODkD=SKIXRrR%9}-0qk(-i(sgrB<4@V%?CZnMT(}abzQHE_NPR zYNP1eja8mWeVC&V-cYr|&!~Kk4L3Qx1NindbsZac zWMS&-wm;#!ziC-Xm413b3bSe4Z71h_o!=WJcig>Ul<5ea;nr!Wk2m0uH&=qr!x&J} zn^P|}h_+u5!{fa$QN4;+k1@w^&y<>W$guh1-iu4p+cnORqiXXu*}7&FVNd zPS3ni5n+Nsc@$M7sBmXZnV{enBa@3^?ohbmLMpDc z`Vz${ib1QA58tjz+MIK!-CK`@rdaDAqd*%_%`E}^5BEPdKP`2!>vQ`6V@>;j{ZIP< z6F~bgfdlNrL9{+3cfhgK;8S|`flFw9%?IklWNjEqRQ^PfL1_E|rNIvikuM;5eAodN>25zzBdul7(I5D8xS*L z)P!dbz!w~-rjwwp=`=_nx>-Dp?|G63%%>X%{xr6USoRCf#!C6T;corj%^$4P)x!MJ zt?8+sJ(~J1#d)#Ucc5L|{9zDxwWU2MY2H;*qno^J1OwcQ>MZJhBX=Zv;`%|KwsXdX9Q@RZNOEjy#icZuU6knt0DOGW=s`C_Y zQhXi4ZC}n#)TG{G=^}(ESw=8$RnQO>+n1`4r`$v36KXgFr#a5=HHNS&UI*6NKkR441fdBP03vqy}(AmpN3b=r) z%M0^!`9^*ayKQIFj(Cyv)Y`NyRw34RthCCa)`k^U>9+fI%v5JPiQ^055#>OF3$8P< z{Ew-X*C2Kwgq2BrPWEYG&+Pve&7o-0i7y;dus!~VDW4llBpireYY1HtwAK)>_Ta_& zncqO<@Ukf})koJ$$u!kBIbb?p^(_j<#p*j0??On#;B;lw>#X%5%xQ>{UviA(V$n|Q z))bmJ8`X0qF9c*|ijjjXh+{`Fxb+PO_9W7r_aNFPE3XYB5FyeS(f1Hn7_H|(oZu88 ztT++Lp47G^chVyp!e||x&B0ZBH0EuM!M)Jvn!iFUc0-sf#JHJ{V0K?=Z4pLyf{YZ~ zM8;}xpsckHs?$agjgj&iXaRC3n?V)@3C4_c%ExbCxcs9%C~Fmy1^*p_F9uNtBkF?f@#)?VRauQPq3AdW~X+V$eYrA6fX; z<_42P44BjGFQ|8z1r_GUrCCUa-MOndHBt(mdzk$>Zl=jY;^kR#FKoQiM8eX7^yJZ( zL|&56D{Nt{FoxlAFFXOec(QL78JU_tL(GIB08H%##6qZ}`$6U-;A!i412EFa)z}E< z%(tu~L)P3Ya4UdV&hZQ`x3gPRC5~2-cSZnuePL$lmH^Z;JwpsN(>SdW9`-rvwp(g%eZ-VW-?9?V}Ps3l=dwpeoT zdxH9pn8{N?4TJ;HNr3EOj_S?eVf6ALTGcTN0q)ZBT0`)xZlFrtgy;iT>>o{^L-jSb zn5Q6S)dv)}AOxgpfv1ZQ`+-BoNdEplM`ICE_F@?>0ZlAu!QO8n z(2(&aVo3>P`W#?eEZISqGch6&NnZu+Ac1itm1N+}=mb7iBgqYqiey74HAoi~Zzv?k zFom2195MpS9gTYCGJg{xP8#m}p?1lGQ9LP~`rV&&jjW zld#l=eyT7@&dburN?Lkf)t3;Y*h4^#qba4JpEYKzc-G|#iv&cTB`kRRwhY5(cvye` zO8Qxd@*V6`p*9H^5Z@}jlmVe5+i4uCSDpJY&dndmXO|PV?(tOD{==&2%yyg!vBx#ABK&M%TG~Hk!dve#r2yd&$H6y@EZ~ z*>Z=Wf+SkrUsj8^7iJ^{EIi6>oi}(dJHihJEYsnuGm9$=^~UOos?W@=-mKTx8psK< zMROyQqp_KL*?V6%yVh+%mu~J4acAC`tD0%kjjas88G6(W;3ovc5C&i9xMInNDc+&DLUEO1j$(;|TUC8T@qLPqDL$dt zfap&~O8@(hBF50^m3A5;u(^uac*cjA7#cq^ehi;8 Date: Tue, 2 Mar 2021 22:46:18 -0300 Subject: [PATCH 18/26] Delete Auth.py --- Auth.py | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 Auth.py diff --git a/Auth.py b/Auth.py deleted file mode 100644 index 1a233a1..0000000 --- a/Auth.py +++ /dev/null @@ -1,7 +0,0 @@ - -#Define o escopo e as credenciais do bot -SCOPES = ['https://www.googleapis.com/auth/spreadsheets'] -SERVICE_ACCOUNT_FILE = 'credenciais.json' - -#Define o ID da planilha -SAMPLE_SPREADSHEET_ID = "15ftB4dwmhDC4eeBR0Redw-BSuqS2elypdFX1I5DauI8" From d0595cb9b9bde82823a86add54ce3e5c226f2037 Mon Sep 17 00:00:00 2001 From: caiocbr <38052450+caiocbr@users.noreply.github.com> Date: Tue, 2 Mar 2021 22:46:33 -0300 Subject: [PATCH 19/26] Delete Init.py --- Init.py | 54 ------------------------------------------------------ 1 file changed, 54 deletions(-) delete mode 100644 Init.py diff --git a/Init.py b/Init.py deleted file mode 100644 index 58cba0e..0000000 --- a/Init.py +++ /dev/null @@ -1,54 +0,0 @@ -from googleapiclient.discovery import build -from google.oauth2 import service_account -from Func_GSAPI import * - - #Define o escopo e as credenciais do bot -SCOPES = ['https://www.googleapis.com/auth/spreadsheets'] -SERVICE_ACCOUNT_FILE = 'credenciais.json' - -#Define o ID da planilha -SAMPLE_SPREADSHEET_ID = "15ftB4dwmhDC4eeBR0Redw-BSuqS2elypdFX1I5DauI8" - -def Init(spreadsheet , sheet_id): - - requests = [] - - requests.append(change_size_row(sheet_id , 1 , 2 , 100)) - - requests.append(change_size_column(sheet_id , 0 , 1 , 210)) - requests.append(change_size_column(sheet_id , 1 , 2 , 80)) - requests.append(change_size_column(sheet_id , 2 , 3 , 53)) - requests.append(change_size_column(sheet_id , 3 , 4 , 80)) - requests.append(change_size_column(sheet_id , 4 , 5 , 215)) - requests.append(change_size_column(sheet_id , 5 , 6 , 215)) - requests.append(change_size_column(sheet_id , 6 , 7 , 25)) - - requests.append(merge_rows(sheet_id , 1 , 4 , 2 , 6)) - - requests.append(add_value(sheet_id , 1 , 0 , "Contest name")) - requests.append(add_value(sheet_id , 1 , 1 , "Editorial")) - requests.append(add_value(sheet_id , 1 , 2 , "Code")) - requests.append(add_value(sheet_id , 1 , 3 , "Date")) - requests.append(add_value(sheet_id , 1 , 4 , "Subject(s)")) - - requests.append(centralize_cells(sheet_id , 1 , 0 , 2 , 6)) - requests.append(border_all_cells(sheet_id , 1 , 0 , 2 , 6)) - requests.append(bold_cells(sheet_id , 1 , 0 , 2 , 6)) - - - - - body = {"requests":requests} - spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() - -def main(): - creds = None - creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES) - - service = build('sheets', 'v4', credentials=creds) - spreadsheet = service.spreadsheets() - - Init(spreadsheet,0) - -if __name__ == '__main__': - main() From ea33845e6110c631f01f2501e8819bea97610879 Mon Sep 17 00:00:00 2001 From: caiocbr <38052450+caiocbr@users.noreply.github.com> Date: Tue, 2 Mar 2021 22:46:41 -0300 Subject: [PATCH 20/26] Delete Insert_Contest.py --- Insert_Contest.py | 75 ----------------------------------------------- 1 file changed, 75 deletions(-) delete mode 100644 Insert_Contest.py diff --git a/Insert_Contest.py b/Insert_Contest.py deleted file mode 100644 index 564e052..0000000 --- a/Insert_Contest.py +++ /dev/null @@ -1,75 +0,0 @@ -from googleapiclient.discovery import build -from google.oauth2 import service_account -from google_sheets_utilities import * -from Auth import * -from insert_contest_constants import * - -num_usuarios = 5 - -class Contest: - name , link , editorial_link , code , date , num_question = "" , "" , "" , "" , "" , 0 - def __init__(self , name , link , editorial_link , code , date , num_question): - self.name = name - self.link = link - self.editorial_link = editorial_link - self.code = code - self.date = date - self.num_question = num_question - -def insert_contest(spreadsheet , sheet_id , contest): - requests = [] - requests.append(request_insert_rows(sheet_id,CONTEST_START_ROW, - CONTEST_START_ROW+contest.num_question)) - requests.append(request_merge_columns(sheet_id,CONTEST_START_ROW,CONTEST_START_COLUMN, - CONTEST_START_ROW+contest.num_question,QUESTION_START_ROW)) - requests.append(request_add_hyperlink(sheet_id,CONTEST_START_ROW,CONTEST_START_COLUMN, - contest.name,contest.link)) - if contest.editorial_link != "": - requests.append(request_add_hyperlink(sheet_id,CONTEST_START_ROW,CONTEST_START_COLUMN+1, - "Editorial",contest.editorial_link)) - requests.append(request_add_value(sheet_id,CONTEST_START_ROW,CONTEST_START_COLUMN+2, - contest.code)) - requests.append(request_add_value(sheet_id,CONTEST_START_ROW,CONTEST_START_COLUMN+3, - contest.date)) - for i in range(0,contest.num_question): - requests.append(request_add_value(sheet_id,QUESTION_START_ROW+i,QUESTION_START_COLUMN, - chr(65+i))) - if num_usuarios > 0: - formula = get_formula(spreadsheet,sheet_id,PENDING_QUESTION_START_ROW+1, - PENDING_QUESTION_START_COLUMN) - aux = "" - for i in range(0,len(formula)): - if formula[i] == ':': - i = i+2 - while formula[i] != ';': - aux += formula[i] - i = i+1 - for i in range(0,num_usuarios): - string = '=CONT.SE(' + chr(72+i) + '5:' + chr(72+i) + aux + ';"x")*(-1)+' + str(int(aux)-5) - requests.append(request_add_formula_value(sheet_id,PENDING_QUESTION_START_ROW, - PENDING_QUESTION_START_COLUMN+i,string)) - requests.append(request_centralize_cells(sheet_id,PENDING_QUESTION_START_ROW, - CONTEST_START_COLUMN,CONTEST_START_ROW+contest.num_question, - PENDING_QUESTION_START_COLUMN+num_usuarios)) - requests.append(request_border_all_cells(sheet_id,CONTEST_START_ROW,CONTEST_START_COLUMN, - CONTEST_START_ROW+contest.num_question, - PENDING_QUESTION_START_COLUMN+num_usuarios)) - requests.append(request_change_color(sheet_id,CONTEST_START_ROW,CONTEST_START_COLUMN, - CONTEST_START_ROW+contest.num_question,CONTEST_START_ROW+2,0,0,0)) - body = {"requests":requests} - spreadsheet.batchUpdate(spreadsheetId=SAMPLE_SPREADSHEET_ID, body=body).execute() - -def main(): - creds = None - creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES) - - service = build('sheets', 'v4', credentials=creds) - spreadsheet = service.spreadsheets() - - teste = Contest("caio","caio","caio","caio","caio",3) - insert_contest(spreadsheet,0,teste) - - -if __name__ == '__main__': - main() - From 212982c7111eac613382d665a4ad8e8c689c1c73 Mon Sep 17 00:00:00 2001 From: caiocbr <38052450+caiocbr@users.noreply.github.com> Date: Tue, 2 Mar 2021 22:46:48 -0300 Subject: [PATCH 21/26] Delete insert_contest_constants.py --- insert_contest_constants.py | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 insert_contest_constants.py diff --git a/insert_contest_constants.py b/insert_contest_constants.py deleted file mode 100644 index b0aa61f..0000000 --- a/insert_contest_constants.py +++ /dev/null @@ -1,8 +0,0 @@ -HEAD_START_ROW = 2 -HEAD_START_COLUMN = 0 -CONTEST_START_ROW = 4 -CONTEST_START_COLUMN = 0 -QUESTION_START_ROW = 4 -QUESTION_START_COLUMN = 6 -PENDING_QUESTION_START_ROW = 3 -PENDING_QUESTION_START_COLUMN = 7 From 6a8ff2aefde10d361d48927c32e97fd5ae2f32f7 Mon Sep 17 00:00:00 2001 From: caiocbr Date: Wed, 3 Mar 2021 00:07:17 -0300 Subject: [PATCH 22/26] Ajuste docstring de todas as funcoes --- google_sheets_utilities.py | 48 +++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/google_sheets_utilities.py b/google_sheets_utilities.py index b3751d9..8a58230 100644 --- a/google_sheets_utilities.py +++ b/google_sheets_utilities.py @@ -2,7 +2,7 @@ from Auth import * def request_insert_rows(sheet_id, start_index, num_rows): - '''Insere uma "num" linhas na linha de numero "start_index"''' + ''' Retorna o request que insere uma "num" linhas na linha de numero "start_index"''' request_body = { "insertDimension": { "range": { @@ -17,7 +17,7 @@ def request_insert_rows(sheet_id, start_index, num_rows): def request_merge_columns(sheet_id, start_row, start_column, end_row, end_column): - '''Junta as linhas num grid com o canto superior esquerdo em + ''' Retorna o request que junta as linhas num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' request_body = { "mergeCells": { @@ -35,7 +35,7 @@ def request_merge_columns(sheet_id, start_row, start_column, end_row, end_column def request_merge_rows(sheet_id, start_row, start_column, end_row, end_column): - '''Junta as colunas num grid com o canto superior esquerdo em + ''' Retorna o request que junta as colunas num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' request_body = { "mergeCells": { @@ -53,7 +53,7 @@ def request_merge_rows(sheet_id, start_row, start_column, end_row, end_column): def request_centralize_cells(sheet_id, start_row, start_column, end_row, end_column): - '''Centraliza o texto num grid com o canto superior esquerdo em + ''' Retorna o request que centraliza o texto num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' request_body = { "repeatCell": @@ -81,7 +81,8 @@ def request_centralize_cells(sheet_id, start_row, start_column, end_row, end_col def request_add_hyperlink(sheet_id, row_index, column_index, name, url): - '''Adiciona um texto(name) e uma url(url) na celula (rowIndex,columnIndex)''' + ''' Retorna o request que adiciona um texto(name) e uma url(url) na + celula (rowIndex,columnIndex)''' request_body = { "updateCells": { @@ -106,7 +107,7 @@ def request_add_hyperlink(sheet_id, row_index, column_index, name, url): def request_add_value(sheet_id, row_index, column_index, value): - '''Escreve "value" na celula (rowIndex,columnIndex)''' + ''' Retorna o request que escreve "value" na celula (rowIndex,columnIndex)''' request_body = { "updateCells": { @@ -130,8 +131,8 @@ def request_add_value(sheet_id, row_index, column_index, value): def request_border_cell(sheet_id, start_row, start_column, end_row, end_column): - '''Realca apenas as bordas externas num grid com o canto superior esquerdo em - (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' + ''' Retorna o request que realca apenas as bordas externas num grid com o canto superior + esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' request_body = { "updateBorders": { "range":{ @@ -151,7 +152,7 @@ def request_border_cell(sheet_id, start_row, start_column, end_row, end_column): def request_border_all_cells(sheet_id, start_row, start_column, end_row, end_column): - '''Realca todas as bordas num grid com o canto superior esquerdo em + ''' Retorna o request que realca todas as bordas num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' request_body = { "repeatCell": { @@ -179,7 +180,7 @@ def request_border_all_cells(sheet_id, start_row, start_column, end_row, end_col def request_change_color(sheet_id, start_row, start_column, end_row, end_column, red, green, blue): - '''Muda a cor do texto num grid com o canto superior esquerdo em + ''' Retorna o request que muda a cor do texto num grid com o canto superior esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn) para o sistema rgb,com cada parametro variando de [0,1]''' request_body = { @@ -209,8 +210,9 @@ def request_change_color(sheet_id, start_row, start_column, end_row, end_column, def request_add_condition_rule_red_blank(sheet_id, start_row, start_column, end_row, end_column): - '''Add a regra de deixar vermelho se estiver em branco num grid com o canto superior - esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' + ''' Retorna o request que add a regra de deixar vermelho se estiver em branco + num grid com o canto superior esquerdo em (startRow,startColumn) e + canto inferior direito em (endRow,endColumn)''' request_body = { "addConditionalFormatRule": { "rule": { @@ -239,8 +241,9 @@ def request_add_condition_rule_red_blank(sheet_id, start_row, start_column, end_ def request_add_condition_rule_green_not_blank(sheet_id, start_row, start_column, end_row, end_column): - '''Add a regra de deixar verde se nao estiver vazio num grid com o canto superior - esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' + ''' Retorna o request que add a regra de deixar verde se nao estiver vazio num grid com + o canto superior esquerdo em (startRow,startColumn) e canto inferior direito + em (endRow,endColumn)''' request_body = { "addConditionalFormatRule": { "rule": { @@ -269,8 +272,8 @@ def request_add_condition_rule_green_not_blank(sheet_id, start_row, start_column def request_change_size_column(sheet_id, start_index, end_index, size): - '''Altera o tamanho das colunas comecando na posicao "startIndex" e temrinando na posicao - endIndex para size''' + ''' Retorna o request que altera o tamanho das colunas comecando na posicao + "startIndex" e temrinando na posicao endIndex para size''' request_body = { "updateDimensionProperties": { "range": { @@ -289,8 +292,8 @@ def request_change_size_column(sheet_id, start_index, end_index, size): def request_change_size_row(sheet_id, start_index, end_index, size): - '''Altera o tamanho das linhas comecando na posicao "startIndex" e temrinando na posicao - endIndex para size''' + ''' Retorna o request que altera o tamanho das linhas comecando na posicao "startIndex" + e temrinando na posicao endIndex para size''' request_body = { "updateDimensionProperties": { "range": { @@ -309,8 +312,9 @@ def request_change_size_row(sheet_id, start_index, end_index, size): def request_bold_cells(sheet_id, start_row, start_column, end_row, end_column): - '''Altera o texto para ficar em negrito num grid com o canto superior esquerdo em - (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' + ''' Retorna o request que altera o texto para ficar em negrito num grid com o + canto superior esquerdo em (startRow,startColumn) e canto inferior direito + em (endRow,endColumn)''' request_body = { "repeatCell": { "range":{ @@ -334,7 +338,8 @@ def request_bold_cells(sheet_id, start_row, start_column, end_row, end_column): def request_add_formula_value(sheet_id, row_index, column_index, value): - '''Adiciona uma formula na celula de posicao (rowIndex,columnIndex) com o valor "value"''' + ''' Retorna o request que adiciona uma formula na celula de posicao + (rowIndex,columnIndex) com o valor "value"''' request_body = { "updateCells": { @@ -358,6 +363,7 @@ def request_add_formula_value(sheet_id, row_index, column_index, value): def get_formula(spreadsheet, sheet_id, row_index, column_index): + ''' Retorna a formula da celula de posicao (row_index,column_index)''' result = spreadsheet.values().get(spreadsheetId=SAMPLE_SPREADSHEET_ID, range= "p1!" + chr(65+column_index) + str(row_index) + ":"+ chr(65+column_index) + str(row_index),valueRenderOption = "FORMULA").execute() From 293b84b81526496e24b7b3912f34ba36bc79c1d3 Mon Sep 17 00:00:00 2001 From: caiocbr Date: Wed, 3 Mar 2021 00:14:24 -0300 Subject: [PATCH 23/26] Coloquei um espaco nos cometarios --- google_sheets_utilities.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/google_sheets_utilities.py b/google_sheets_utilities.py index 8a58230..c467920 100644 --- a/google_sheets_utilities.py +++ b/google_sheets_utilities.py @@ -18,7 +18,7 @@ def request_insert_rows(sheet_id, start_index, num_rows): def request_merge_columns(sheet_id, start_row, start_column, end_row, end_column): ''' Retorna o request que junta as linhas num grid com o canto superior esquerdo em - (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' + (startRow, startColumn) e canto inferior direito em (endRow, endColumn)''' request_body = { "mergeCells": { "range": { @@ -36,7 +36,7 @@ def request_merge_columns(sheet_id, start_row, start_column, end_row, end_column def request_merge_rows(sheet_id, start_row, start_column, end_row, end_column): ''' Retorna o request que junta as colunas num grid com o canto superior esquerdo em - (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' + (startRow, startColumn) e canto inferior direito em (endRow, endColumn)''' request_body = { "mergeCells": { "range": { @@ -54,7 +54,7 @@ def request_merge_rows(sheet_id, start_row, start_column, end_row, end_column): def request_centralize_cells(sheet_id, start_row, start_column, end_row, end_column): ''' Retorna o request que centraliza o texto num grid com o canto superior esquerdo em - (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' + (startRow, startColumn) e canto inferior direito em (endRow, endColumn)''' request_body = { "repeatCell": { @@ -82,7 +82,7 @@ def request_centralize_cells(sheet_id, start_row, start_column, end_row, end_col def request_add_hyperlink(sheet_id, row_index, column_index, name, url): ''' Retorna o request que adiciona um texto(name) e uma url(url) na - celula (rowIndex,columnIndex)''' + celula (rowIndex, columnIndex)''' request_body = { "updateCells": { @@ -107,7 +107,7 @@ def request_add_hyperlink(sheet_id, row_index, column_index, name, url): def request_add_value(sheet_id, row_index, column_index, value): - ''' Retorna o request que escreve "value" na celula (rowIndex,columnIndex)''' + ''' Retorna o request que escreve "value" na celula (rowIndex, columnIndex)''' request_body = { "updateCells": { @@ -132,7 +132,7 @@ def request_add_value(sheet_id, row_index, column_index, value): def request_border_cell(sheet_id, start_row, start_column, end_row, end_column): ''' Retorna o request que realca apenas as bordas externas num grid com o canto superior - esquerdo em (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' + esquerdo em (startRow, startColumn) e canto inferior direito em (endRow, endColumn)''' request_body = { "updateBorders": { "range":{ @@ -153,7 +153,7 @@ def request_border_cell(sheet_id, start_row, start_column, end_row, end_column): def request_border_all_cells(sheet_id, start_row, start_column, end_row, end_column): ''' Retorna o request que realca todas as bordas num grid com o canto superior esquerdo em - (startRow,startColumn) e canto inferior direito em (endRow,endColumn)''' + (startRow, startColumn) e canto inferior direito em (endRow, endColumn)''' request_body = { "repeatCell": { "range":{ @@ -181,8 +181,8 @@ def request_border_all_cells(sheet_id, start_row, start_column, end_row, end_col def request_change_color(sheet_id, start_row, start_column, end_row, end_column, red, green, blue): ''' Retorna o request que muda a cor do texto num grid com o canto superior esquerdo em - (startRow,startColumn) e canto inferior direito em (endRow,endColumn) - para o sistema rgb,com cada parametro variando de [0,1]''' + (startRow, startColumn) e canto inferior direito em (endRow, endColumn) + para o sistema rgb,com cada parametro variando de [0,1]''' request_body = { "repeatCell": { "range":{ @@ -211,8 +211,8 @@ def request_change_color(sheet_id, start_row, start_column, end_row, end_column, def request_add_condition_rule_red_blank(sheet_id, start_row, start_column, end_row, end_column): ''' Retorna o request que add a regra de deixar vermelho se estiver em branco - num grid com o canto superior esquerdo em (startRow,startColumn) e - canto inferior direito em (endRow,endColumn)''' + num grid com o canto superior esquerdo em (startRow, startColumn) e + canto inferior direito em (endRow, endColumn)''' request_body = { "addConditionalFormatRule": { "rule": { @@ -242,8 +242,8 @@ def request_add_condition_rule_red_blank(sheet_id, start_row, start_column, end_ def request_add_condition_rule_green_not_blank(sheet_id, start_row, start_column, end_row, end_column): ''' Retorna o request que add a regra de deixar verde se nao estiver vazio num grid com - o canto superior esquerdo em (startRow,startColumn) e canto inferior direito - em (endRow,endColumn)''' + o canto superior esquerdo em (startRow, startColumn) e canto inferior direito + em (endRow, endColumn)''' request_body = { "addConditionalFormatRule": { "rule": { @@ -273,7 +273,7 @@ def request_add_condition_rule_green_not_blank(sheet_id, start_row, start_column def request_change_size_column(sheet_id, start_index, end_index, size): ''' Retorna o request que altera o tamanho das colunas comecando na posicao - "startIndex" e temrinando na posicao endIndex para size''' + "startIndex" e temrinando na posicao endIndex para size''' request_body = { "updateDimensionProperties": { "range": { @@ -293,7 +293,7 @@ def request_change_size_column(sheet_id, start_index, end_index, size): def request_change_size_row(sheet_id, start_index, end_index, size): ''' Retorna o request que altera o tamanho das linhas comecando na posicao "startIndex" - e temrinando na posicao endIndex para size''' + e temrinando na posicao endIndex para size''' request_body = { "updateDimensionProperties": { "range": { @@ -313,8 +313,8 @@ def request_change_size_row(sheet_id, start_index, end_index, size): def request_bold_cells(sheet_id, start_row, start_column, end_row, end_column): ''' Retorna o request que altera o texto para ficar em negrito num grid com o - canto superior esquerdo em (startRow,startColumn) e canto inferior direito - em (endRow,endColumn)''' + canto superior esquerdo em (startRow, startColumn) e canto inferior direito + em (endRow, endColumn)''' request_body = { "repeatCell": { "range":{ @@ -339,7 +339,7 @@ def request_bold_cells(sheet_id, start_row, start_column, end_row, end_column): def request_add_formula_value(sheet_id, row_index, column_index, value): ''' Retorna o request que adiciona uma formula na celula de posicao - (rowIndex,columnIndex) com o valor "value"''' + (rowIndex, columnIndex) com o valor "value"''' request_body = { "updateCells": { From 33a8cf300c7cc0d822bc5da55c2d2e8c2e78ea0b Mon Sep 17 00:00:00 2001 From: caiocbr Date: Thu, 11 Mar 2021 21:31:30 -0300 Subject: [PATCH 24/26] formatacao do codigo --- google_sheets_utilities.py | 147 +++++++++++++++++++++---------------- 1 file changed, 82 insertions(+), 65 deletions(-) diff --git a/google_sheets_utilities.py b/google_sheets_utilities.py index c467920..1847998 100644 --- a/google_sheets_utilities.py +++ b/google_sheets_utilities.py @@ -1,28 +1,30 @@ from google_sheets_constants import * from Auth import * -def request_insert_rows(sheet_id, start_index, num_rows): - ''' Retorna o request que insere uma "num" linhas na linha de numero "start_index"''' +def insert_rows_request(tab_id, start_index, rows_quantity): + ''' Pega o ID da tabela, a linha de inicio e a quantidade de linhas a serem inseridas + Retorna o request que insere uma "num" linhas na linha de numero "start_index"''' request_body = { "insertDimension": { "range": { - "sheetId": sheet_id , + "sheetId": tab_id , "dimension": "ROWS", "startIndex": start_index, - "endIndex": num_rows + "endIndex": rows_quantity } } } return request_body -def request_merge_columns(sheet_id, start_row, start_column, end_row, end_column): - ''' Retorna o request que junta as linhas num grid com o canto superior esquerdo em - (startRow, startColumn) e canto inferior direito em (endRow, endColumn)''' +def merge_columns_request(tab_id, start_row, start_column, end_row, end_column): + ''' Pega o ID da tabela e o range de aplicacao da funcao + Retorna o request que junta as linhas num grid com o canto superior esquerdo em + (start_row, start_column) e canto inferior direito em (end_row-1, end_column-1)''' request_body = { "mergeCells": { "range": { - "sheetId": sheet_id, + "sheetId": tab_id, "startRowIndex": start_row, "endRowIndex": end_row, "startColumnIndex": start_column, @@ -34,13 +36,14 @@ def request_merge_columns(sheet_id, start_row, start_column, end_row, end_column return request_body -def request_merge_rows(sheet_id, start_row, start_column, end_row, end_column): - ''' Retorna o request que junta as colunas num grid com o canto superior esquerdo em - (startRow, startColumn) e canto inferior direito em (endRow, endColumn)''' +def merge_rows_request(tab_id, start_row, start_column, end_row, end_column): + ''' Pega o ID da tabela e o range de aplicacao da funcao + Retorna o request que junta as colunas num grid com o canto superior esquerdo em + (start_row, start_column) e canto inferior direito em (end_row-1, end_column-1)''' request_body = { "mergeCells": { "range": { - "sheetId": sheet_id, + "sheetId": tab_id, "startRowIndex": start_row, "endRowIndex": end_row, "startColumnIndex": start_column, @@ -52,9 +55,10 @@ def request_merge_rows(sheet_id, start_row, start_column, end_row, end_column): return request_body -def request_centralize_cells(sheet_id, start_row, start_column, end_row, end_column): - ''' Retorna o request que centraliza o texto num grid com o canto superior esquerdo em - (startRow, startColumn) e canto inferior direito em (endRow, endColumn)''' +def centralize_cells_request(tab_id, start_row, start_column, end_row, end_column): + ''' Pega o ID da tabela e o range de aplicacao da funcao + Retorna o request que centraliza o texto num grid com o canto superior esquerdo em + (start_row, start_column) e canto inferior direito em (end_row-1, end_column-1)''' request_body = { "repeatCell": { @@ -68,7 +72,7 @@ def request_centralize_cells(sheet_id, start_row, start_column, end_row, end_col }, "range": { - "sheetId": sheet_id, + "sheetId": tab_id, "startRowIndex": start_row, "endRowIndex": end_row, "startColumnIndex": start_column, @@ -80,9 +84,10 @@ def request_centralize_cells(sheet_id, start_row, start_column, end_row, end_col return request_body -def request_add_hyperlink(sheet_id, row_index, column_index, name, url): - ''' Retorna o request que adiciona um texto(name) e uma url(url) na - celula (rowIndex, columnIndex)''' +def add_hyperlink_request(tab_id, row_index, column_index, name, url): + ''' Pega o ID da tabela, a posicao da celula e o nome e a url a ser inserido + Retorna o request que adiciona um texto(name) e uma url(url) na + celula (row_index, column_index)''' request_body = { "updateCells": { @@ -97,7 +102,7 @@ def request_add_hyperlink(sheet_id, row_index, column_index, name, url): , "fields": "userEnteredValue", "start": { - "sheetId": sheet_id, + "sheetId": tab_id, "rowIndex": row_index, "columnIndex": column_index } @@ -106,8 +111,9 @@ def request_add_hyperlink(sheet_id, row_index, column_index, name, url): return request_body -def request_add_value(sheet_id, row_index, column_index, value): - ''' Retorna o request que escreve "value" na celula (rowIndex, columnIndex)''' +def add_value_request(tab_id, row_index, column_index, value): + ''' Pega o ID da tabela, a posicao da celula e o valor a ser escrito + Retorna o request que escreve "value" na celula (row_index, column_index)''' request_body = { "updateCells": { @@ -121,7 +127,7 @@ def request_add_value(sheet_id, row_index, column_index, value): }, "fields": "userEnteredValue", "start": { - "sheetId": sheet_id, + "sheetId": tab_id, "rowIndex": row_index, "columnIndex": column_index } @@ -130,13 +136,15 @@ def request_add_value(sheet_id, row_index, column_index, value): return request_body -def request_border_cell(sheet_id, start_row, start_column, end_row, end_column): - ''' Retorna o request que realca apenas as bordas externas num grid com o canto superior - esquerdo em (startRow, startColumn) e canto inferior direito em (endRow, endColumn)''' +def border_cell_request(tab_id, start_row, start_column, end_row, end_column): + ''' Pega o ID da tabela e o range de aplicacao da funcao + Retorna o request que realca apenas as bordas externas num grid com o canto superior + esquerdo em (start_row, start_column) e canto inferior direito em + (end_row-1, end_column-1)''' request_body = { "updateBorders": { "range":{ - "sheetId": sheet_id, + "sheetId": tab_id, "startRowIndex": start_row, "endRowIndex": end_row, "startColumnIndex": start_column, @@ -151,13 +159,14 @@ def request_border_cell(sheet_id, start_row, start_column, end_row, end_column): return request_body -def request_border_all_cells(sheet_id, start_row, start_column, end_row, end_column): - ''' Retorna o request que realca todas as bordas num grid com o canto superior esquerdo em - (startRow, startColumn) e canto inferior direito em (endRow, endColumn)''' +def border_all_cells_request(tab_id, start_row, start_column, end_row, end_column): + ''' Pega o ID da tabela e o range de aplicacao da funcao + Retorna o request que realca todas as bordas num grid com o canto superior esquerdo em + (start_row, start_column) e canto inferior direito em (end_row-1, end_column-1)''' request_body = { "repeatCell": { "range":{ - "sheetId": sheet_id, + "sheetId": tab_id, "startRowIndex": start_row, "endRowIndex": end_row, "startColumnIndex": start_column, @@ -179,14 +188,15 @@ def request_border_all_cells(sheet_id, start_row, start_column, end_row, end_col return request_body -def request_change_color(sheet_id, start_row, start_column, end_row, end_column, red, green, blue): - ''' Retorna o request que muda a cor do texto num grid com o canto superior esquerdo em - (startRow, startColumn) e canto inferior direito em (endRow, endColumn) +def change_color_request(tab_id, start_row, start_column, end_row, end_column, red, green, blue): + ''' Pega o ID da tabela, o range de aplicacao da funcao e as cores RGB + Retorna o request que muda a cor do texto num grid com o canto superior esquerdo em + (start_row, start_column) e canto inferior direito em (end_row-1, end_column-1) para o sistema rgb,com cada parametro variando de [0,1]''' request_body = { "repeatCell": { "range":{ - "sheetId": sheet_id, + "sheetId": tab_id, "startRowIndex": start_row, "endRowIndex": end_row, "startColumnIndex": start_column, @@ -209,15 +219,16 @@ def request_change_color(sheet_id, start_row, start_column, end_row, end_column, return request_body -def request_add_condition_rule_red_blank(sheet_id, start_row, start_column, end_row, end_column): - ''' Retorna o request que add a regra de deixar vermelho se estiver em branco - num grid com o canto superior esquerdo em (startRow, startColumn) e - canto inferior direito em (endRow, endColumn)''' +def add_condition_rule_red_blank_request(tab_id, start_row, start_column, end_row, end_column): + ''' Pega o ID da tabela e o range de aplicacao da funcao + Retorna o request que add a regra de deixar vermelho se estiver em branco + num grid com o canto superior esquerdo em (start_row, start_column) e + canto inferior direito em (end_row-1, end_column-1)''' request_body = { "addConditionalFormatRule": { "rule": { "ranges":{ - "sheetId": sheet_id, + "sheetId": tab_id, "startRowIndex": start_row, "endRowIndex": end_row, "startColumnIndex": start_column, @@ -240,15 +251,16 @@ def request_add_condition_rule_red_blank(sheet_id, start_row, start_column, end_ return request_body -def request_add_condition_rule_green_not_blank(sheet_id, start_row, start_column, end_row, end_column): - ''' Retorna o request que add a regra de deixar verde se nao estiver vazio num grid com - o canto superior esquerdo em (startRow, startColumn) e canto inferior direito - em (endRow, endColumn)''' +def add_condition_rule_green_not_blank_request(tab_id, start_row, start_column, end_row, end_column): + ''' Pega o ID da tabela e o range de aplicacao da funcao + Retorna o request que add a regra de deixar verde se nao estiver vazio num grid com + o canto superior esquerdo em (start_row, start_column) e canto inferior direito + em (end_row-1, end_column-1)''' request_body = { "addConditionalFormatRule": { "rule": { "ranges":{ - "sheetId": sheet_id, + "sheetId": tab_id, "startRowIndex": start_row, "endRowIndex": end_row, "startColumnIndex": start_column, @@ -271,13 +283,14 @@ def request_add_condition_rule_green_not_blank(sheet_id, start_row, start_column return request_body -def request_change_size_column(sheet_id, start_index, end_index, size): - ''' Retorna o request que altera o tamanho das colunas comecando na posicao - "startIndex" e temrinando na posicao endIndex para size''' +def change_size_column_request(tab_id, start_index, end_index, size): + ''' Pega o ID da tabela, a linha de inicio e de fim e o tamanho da coluna desejado + Retorna o request que altera o tamanho das colunas comecando na posicao + "start_index" e temrinando na posicao end_index para size''' request_body = { "updateDimensionProperties": { "range": { - "sheetId": sheet_id, + "sheetId": tab_id, "dimension": "COLUMNS", "startIndex": start_index, "endIndex": end_index @@ -291,13 +304,14 @@ def request_change_size_column(sheet_id, start_index, end_index, size): return request_body -def request_change_size_row(sheet_id, start_index, end_index, size): - ''' Retorna o request que altera o tamanho das linhas comecando na posicao "startIndex" - e temrinando na posicao endIndex para size''' +def change_size_row_request(tab_id, start_index, end_index, size): + ''' Pega o ID da tabela, a coluna de inicio e de fim e o tamanho da linha desjado + Retorna o request que altera o tamanho das linhas comecando na posicao "start_index" + e temrinando na posicao end_index para size''' request_body = { "updateDimensionProperties": { "range": { - "sheetId": sheet_id, + "sheetId": tab_id, "dimension": "ROWS", "startIndex": start_index, "endIndex": end_index @@ -311,14 +325,15 @@ def request_change_size_row(sheet_id, start_index, end_index, size): return request_body -def request_bold_cells(sheet_id, start_row, start_column, end_row, end_column): - ''' Retorna o request que altera o texto para ficar em negrito num grid com o - canto superior esquerdo em (startRow, startColumn) e canto inferior direito - em (endRow, endColumn)''' +def bold_cells_request(tab_id, start_row, start_column, end_row, end_column): + ''' Pega o ID da tabela e o range de aplicacao da funcao + Retorna o request que altera o texto para ficar em negrito num grid com o + canto superior esquerdo em (start_row, start_column) e canto inferior direito + em (end_row-1, end_column-1)''' request_body = { "repeatCell": { "range":{ - "sheetId": sheet_id, + "sheetId": tab_id, "startRowIndex": start_row, "endRowIndex": end_row, "startColumnIndex": start_column, @@ -337,9 +352,10 @@ def request_bold_cells(sheet_id, start_row, start_column, end_row, end_column): return request_body -def request_add_formula_value(sheet_id, row_index, column_index, value): - ''' Retorna o request que adiciona uma formula na celula de posicao - (rowIndex, columnIndex) com o valor "value"''' +def add_formula_value_request(tab_id, row_index, column_index, value): + ''' Pega o ID da tabela, a posicao da celula e o valor a ser escrito + Retorna o request que adiciona uma formula na celula de posicao + (row_index, column_index) com o valor "value"''' request_body = { "updateCells": { @@ -353,7 +369,7 @@ def request_add_formula_value(sheet_id, row_index, column_index, value): }, "fields": "userEnteredValue", "start": { - "sheetId": sheet_id, + "sheetId": tab_id, "rowIndex": row_index, "columnIndex": column_index } @@ -362,9 +378,10 @@ def request_add_formula_value(sheet_id, row_index, column_index, value): return request_body -def get_formula(spreadsheet, sheet_id, row_index, column_index): - ''' Retorna a formula da celula de posicao (row_index,column_index)''' - result = spreadsheet.values().get(spreadsheetId=SAMPLE_SPREADSHEET_ID, range= "p1!" + +def get_formula(spreadsheet, name_tab, row_index, column_index): + ''' Pega a spreadsheet, o nome da tabela e a posicao da celula + Retorna a formula da celula de posicao (row_index,column_index)''' + result = spreadsheet.values().get(spreadsheetId=SAMPLE_SPREADSHEET_ID, range= name_tab + chr(65+column_index) + str(row_index) + ":"+ chr(65+column_index) + str(row_index),valueRenderOption = "FORMULA").execute() values = result.get('values', []) From 769506698d425a02c88f40dc32929c957e5cacce Mon Sep 17 00:00:00 2001 From: caiocbr Date: Thu, 11 Mar 2021 21:33:49 -0300 Subject: [PATCH 25/26] concerto da funcao insert_rows --- google_sheets_utilities.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google_sheets_utilities.py b/google_sheets_utilities.py index 1847998..a3e3280 100644 --- a/google_sheets_utilities.py +++ b/google_sheets_utilities.py @@ -10,7 +10,7 @@ def insert_rows_request(tab_id, start_index, rows_quantity): "sheetId": tab_id , "dimension": "ROWS", "startIndex": start_index, - "endIndex": rows_quantity + "endIndex": start_index+rows_quantity } } } From bcebde4ea50f72673f22b6ab461af6e73446e493 Mon Sep 17 00:00:00 2001 From: caiocbr Date: Thu, 18 Mar 2021 23:24:16 -0300 Subject: [PATCH 26/26] Ajuste no nome das variaveis --- google_sheets_utilities.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/google_sheets_utilities.py b/google_sheets_utilities.py index a3e3280..df91578 100644 --- a/google_sheets_utilities.py +++ b/google_sheets_utilities.py @@ -1,7 +1,7 @@ from google_sheets_constants import * from Auth import * -def insert_rows_request(tab_id, start_index, rows_quantity): +def insert_rows_request(tab_id, start_row, rows_quantity): ''' Pega o ID da tabela, a linha de inicio e a quantidade de linhas a serem inseridas Retorna o request que insere uma "num" linhas na linha de numero "start_index"''' request_body = { @@ -9,7 +9,7 @@ def insert_rows_request(tab_id, start_index, rows_quantity): "range": { "sheetId": tab_id , "dimension": "ROWS", - "startIndex": start_index, + "startIndex": start_row, "endIndex": start_index+rows_quantity } }