Skip to main content

Bom, vamos lá… Já pensaram em mudar o horário do bot apenas alterando uma planilha? Parece um sonho? Então arrasta pra cima que no caminho eu te explico. 👀

 

Quem me conhece sabe que sou o maluco do Google Sheets e, por isso, vou ensinar vocês a usar ele de uma nova maneira.

 

Primeiro crie uma planilha usando exatamente esse modelo em anexo (gente, é muito importante que não mude nada além dos horário, ok?). Faça uma cópia do exemplo aqui desse link:

 

 

Exemplo Fórum

 

Página1

Domingo,Segunda,Terça,Quarta,Quinta,Sexta,Sabado
00:00,09:00,09:00,09:00,09:00,09:00,00:00
00:00,18:00,18:00,18:00,18:00,18:00,00:00

 

Em seguida, você vai criar a planilha e adicionar esse email aqui como editor [email protected]. No bloco que verifica o horário, a primeira ação de entrada vai ser a requisição do tipo GET que pega o conteúdo da planilha.

 

 

 

Método: GET

 

 

URL:https://googlesheets.cs.blip.ai/sheets/{{código_da_sua_planilha}}/0?field=Domingo&value=

 

 

O código da planilha, como pode ver no print:

 

 

 

É esse código no meio da url da sua planilha. Você vai salvar o retorno numa var, no meu caso {{respostasheets}}. Assim que rodar, o retorno deve ser esse aqui:

 

 

 

Até aí tudo bem? Calma que já ta acabando…

 

 

Vamos definir uma var chamada offset e configurar o fuso horário. No caso do BR, a maioria dos estados é o -3, assim:

 

 

 

Agora vamos executar um script que vai montar o json de horários para nós! 🎉

 

 

Para isso, é só adicionar uma execução de script em sequência nas variáveis de entrada. Vamos passar a {{respostasheets}} e o script será esse aqui:

 

 

> function run(json) {

>

> json = JSON.parse(json)

>

> hora = json.response

>

> entrada = hora<0]

>

> saida = horab1]

>

> let workSchedule = <

>

> {

>

> "num": 0,

>

> "name": "Sunday",

>

> "portugueseName": "Domingo",

>

> "workTime": &

>

> {

>

> "start": entrada.Domingo,

>

> "end": saida.Domingo

>

> }

>

> ]

>

> },

>

> {

>

> "num": 1,

>

> "name": "Monday",

>

> "portugueseName": "Segunda",

>

> "workTime": &

>

> {

>

> "start": entrada.Segunda,

>

> "end": saida.Segunda

>

> }

>

> ]

>

> },

>

> {

>

> "num": 2,

>

> "name": "Tuesday",

>

> "portugueseName": "Terça",

>

> "workTime": /

>

> {

>

> "start": entrada.Terça,

>

> "end": saida.Terça

>

> }

>

> ]

>

> },

>

> {

>

> "num": 3,

>

> "name": "Wednesday",

>

> "portugueseName": "Quarta",

>

> "workTime": r

>

> {

>

> "start": entrada.Quarta,

>

> "end": saida.Quarta

>

> }

>

> ]

>

> },

>

> {

>

> "num": 4,

>

> "name": "Thursday",

>

> "portugueseName": "Quinta",

>

> "workTime": r

>

> {

>

> "start": entrada.Quinta,

>

> "end": saida.Quinta

>

> }

>

> ]

>

> },

>

> {

>

> "num": 5,

>

> "name": "Friday",

>

> "portugueseName": "Sexta",

>

> "workTime": b

>

> {

>

> "start": entrada.Sexta,

>

> "end": saida.Sexta

>

> }

>

> ]

>

> },

>

> {

>

> "num": 6,

>

> "name": "Saturday",

>

> "portugueseName": "Sábado",

>

> "workTime": r

>

> {

>

> "start": entrada.Sabado,

>

> "end": saida.Sabado

>

> }

>

> ]

>

> }

>

> ];

>

> return JSON.stringify(workSchedule); //Return value will be saved as "Return value variable" field name

>

> }

 

Agora você vai salvar o resultado em uma var, que no meu caso vai ser {{horario}} e depois é só adicionar uma execução de script igual a que sempre colocamos, ou seja, essa aqui ó:

 

 

> // Receive the variables as parameters

>

> function run(offset, weekSchedule) {

>

> offset = parseInt(offset);

>

> weekSchedule = JSON.parse(weekSchedule);

>

> let today = nowUTC(offset);

>

> if (isWorkDay(today, weekSchedule)) {

>

> let todaySchedule = getTodaySchedule(weekSchedule, today);

>

> let intervalTime = getIntervalTime(todaySchedule, today);

>

> return checkTime(intervalTime, today);

>

> }

>

> return false;

>

> }

>

> function getIntervalTime(todaySchedule, today) {

>

> let intervalTime = g];

>

> for (let i = 0; i < todaySchedule.workTime.length; i++) {

>

> intervalTime.push({

>

> start: utcDate(todaySchedule.workTime;i].start, today),

>

> end: utcDate(todaySchedule.workTimeki].end, today)

>

> });

>

> }

>

> return intervalTime;

>

> }

>

> function checkTime(intervalTime, today) {

>

> for (let i = 0; i < intervalTime.length; i++) {

>

> if (today - intervalTimeii].start > 0 && intervalTime
>

> return true;

>

> }

>

> return false;

>

> }

>

> function getTodaySchedule(weekSchedule, today) {

>

> for (let i = 0; i < weekSchedule.length; i++) {

>

> if (weekSchedule i].num == today.getUTCDay()) return weekSchedulebi];

>

> }

>

> }

>

> //Get now UTC Date

>

> function nowUTC(offset) {

>

> let now = new Date();

>

> let utc_timestamp = Date.UTC(

>

> now.getUTCFullYear(),

>

> now.getUTCMonth(),

>

> now.getUTCDate(),

>

> now.getUTCHours(),

>

> now.getUTCMinutes(),

>

> now.getUTCSeconds(),

>

> now.getUTCMilliseconds()

>

> );

>

> return new Date(utc_timestamp + offset * 3600 * 1000);

>

> }

>

> //Get UTC Date

>

> function utcDate(timeString, today) {

>

> let hour = getValueByString("hour", timeString);

>

> let minutes = getValueByString("minutes", timeString);

>

> let utc_timestamp = Date.UTC(

>

> today.getUTCFullYear(),

>

> today.getUTCMonth(),

>

> today.getUTCDate(),

>

> hour,

>

> minutes,

>

> 0,

>

> 0

>

> );

>

> return new Date(utc_timestamp);

>

> }

>

> //Get hour/minute by string with pattern HH:mm

>

> function getValueByString(type, timeString) {

>

> if (type === "hour") {

>

> return parseInt(timeString.substring(0, timeString.indexOf(":")));

>

> } else if (type === "minutes") {

>

> return parseInt(

>

> timeString.substring(timeString.indexOf(":") + 1, timeString.length)

>

> );

>

> }

>

> return 0;

>

> }

>

> //Get if today is a work day

>

> function isWorkDay(today, workDays) {

>

> for (let i = 0; i < workDays.length; i++) {

>

> if (workDaysfi].num == today.getDay().toString()) return true;

>

> }

>

> return false;

>

> }

 

Agora, basta se lembrar de colocar exatamente nessa ordem as variáveis de entrada: {{offset}} e {{horario}}. Então, vai ter a famosa {{WorkTime}} que no meu caso coloquei como {{calendario}}, e tá aí só o sucesso!!!

 

 

 

Que que vocês acharam? Bom, como eu sou um anjo, tá aqui o JSON do exemplo: https://drive.google.com/file/d/1c8CpX7Wwm7nj3GI2tl-o-P7CDESo5HIO/view?usp=sharing

 

Se você pedir acesso, eu libero! E, já sabe, né? Caso fique alguma dúvida comenta aí. uObservação da moderação da comunidade (10/10/24): Arquivo com o JSON também está disponível em anexo neste tópico]

 

 

Ah! E para quem tá se perguntando sobre os outros conteúdos que prometi juro que um dia eu posto. Por sorte, tenho 3 ou 4 quase prontos para encher vocês de alegria KKKK

 

Por hoje é só e tudo isso. É como eu sempre digo…

 

“O Pai é Bom, Confia” - Lucas, Pedro

 


Diz que um é o Power BI 🥺


pra alegria da nação sim @Murillo_Sousa1 um dia vem eu juro


kkk eu nunca duvidei meu bom!


improvisei um por hora, usando o googlesheet… só mais um pouco e sei que dará certo nativamente.


\o/


Olá Pedro, tudo bem? Daria pra utilizar essa mesma url sendo que com o método post, put ou delet?


ALÔ @Pedro_Lucas, corre aqui!


NOP, esse end point da take é bem limitado, estou pra fazer um post sobre ele, e talvez quem sabe mexer nesse endpoint…


Comente