Olá. Eu tenho uma dúvida a respeito de uma aplicação na plataforma. Existe alguma maneira receber os dados de uma máquina, dados de operação por exemplo, e salvar isso em uma tabela/excel, e deixar disponível em algum lugar?
Olá, Luiz!
Existem diversas maneiras, vou trazer uma delas aqui.
Inicialmente, você precisa obter os dados, por exemplo com o bloco “Device GET” para devices ou o “Table: Get Rows” para Data Tables.
Depois, usando os blocos de CSV:encode você organiza os valores em formato de tabela, por fim você gera um arquivo com o bloco “File: Create” e pode salvar ele na área de arquivos da própria aplicação.
Existe um exemplo para baixar, foi um tópico semelhante aqui no fórum:
Bom dia, Luiz
Eu consegui incrementar uma planilha no Google Docs, fazendo um script que faz um requisição de uma time-serie-query. Depois dá pra exportar pra PDF normal
Show, Neemias!
Fique à vontade se quiser compartilhar mais detalhes da sua solução.
Esta é a ideia do Fórum, compartilhar conhecimentos!
Até!
O GoogleDocs tem um sistema de Scripts semelhante à macro do Excel.
Nesta ferramenta é possivel fazer requisições HTTP e preencher planilhas, então eu fiz o seguinte código:
const token = '<COLOCA O TOKEN>'
function get_variable() {
const url = 'https://api.app.wnology.io/applications/65ce49b5bbb6d9059d890116/devices/42ce4a16ba98c8ab6efe7423';
const options = {
'method': 'get',
'contentType': 'application/json',
'headers': {
'Authorization': `Bearer ${token}`
}
};
const response = UrlFetchApp.fetch(url, options);
if (response.getResponseCode() === 200) {
return JSON.parse(response.getContentText())["attributes"].map((element)=>{return element["name"]},0);
} else {
console.log('Erro ao enviar requisição:', response.getResponseCode());
console.log('Mensagem de erro:', response.getContentText());
return [];
}
}
const sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
function enviarRequisicao() {
const url = 'https://api.app.wnology.io/applications/65ce49b5bbb6d9059d890116/data/time-series-query';
let variables = get_variable();
let numero = variables.length;
const payload = {
"deviceIds": ["42ce4a16ba98c8ab6efe7423"],
"attributes": variables,
"end": 0,
"start": 1,
"order": "desc",
"aggregation": "NONE"
};
const options = {
'method': 'post',
'contentType': 'application/json',
'headers': {
'Authorization': `Bearer ${token}`
},
'payload': JSON.stringify(payload)
};
const response = UrlFetchApp.fetch(url, options);
if (response.getResponseCode() === 200) {
console.log('Requisição enviada com sucesso!');
var request = JSON.parse(response.getContentText());
let valores = request["devices"]["42ce4a16ba98c8ab6efe7423"]["points"];
sheet.getRange('A:A').getCell(1, 1).setValue("Timestamp");
for(let j=0;j<variables.length;j++){
sheet.getRange(String.fromCharCode(64 + j+2) + ':'+String.fromCharCode(64 + j+2)).getCell(1, 1).setValue(variables[j]);
}
for(let i=1;i<valores.length;i++){
sheet.getRange('A:A').getCell(i + 1, 1).setValue(valores[i]["time"]);
for(let j=0;j<variables.length;j++){
sheet.getRange(String.fromCharCode(64 + j+2) + ':'+String.fromCharCode(64 + j+2)).getCell(i + 1, 1).setValue(valores[i]["data"][variables[j]]);
}
}
} else {
console.log('Erro ao enviar requisição:', response.getResponseCode());
console.log('Mensagem de erro:', response.getContentText());
}
}
Criei um trigger para executar essa macro todo dia.
PS: Os ID dos equipamentos e aplicação são fictícios.