Salvar Dados em planilha/banco de dados

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?

1 Curtida

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

1 Curtida

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.

1 Curtida