Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Script Soma - Google planilhas

Google Sheets, Google Docs, Google etc. Os apps do Google mais que merecem um fórum específico, e aqui está ele.
Divino Rodrigues
Colaborador
Colaborador
Mensagens: 15
Registrado em: Ter Dez 20, 2016 1:27 pm

Script Soma - Google planilhas

Mensagem por Divino Rodrigues »

function Soma() {
//planilha ativa
var planilha = SpreadsheetsApp.getActiveSpreadsheet();
var guiadados = planilha.getSheetByName("Dados");

var area = guiadados.getRange ("A1:A");

var dados = area.getvalues();

var total = "0";

// length ate o final da lista linha++ aumentando posiçao por posição
for (var linha = 0; linha< dados.length; linha++ ){

var total = parseFloat(dados(linha)[0]);

total = parseFloat(total) + parseFloat(total);

}
guiadados.getRange(linha, +1, 0).setValue(total);
}



Registro de execução
11:20:03
Notificação
Execução iniciada
11:20:04

Erro
ReferenceError: SpreadsheetsApp is not defined
Soma
@ Código.gs:3

Olá
Estou realizando alguns testes no código acima, e tem apresentado o erro acima... Se alguém puder me ajudar (Google Planilhas - Script - Javascript) Obrigado!!!
https://docs.google.com/spreadsheets/d/ ... sp=sharing


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Script Soma - Google planilhas

Mensagem por webmaster »

A planilha está protegida. Pode deixar ela pública de alguma forma?


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Script Soma - Google planilhas

Mensagem por webmaster »

Valeu por disponibilizar a planilha. Vamos lá:

Correção 1:
var guiadados = spreadsheet.getSheetByName("Dados");

A planilha dados não existia. Apenas renomeei a atual para Dados.

Correção 2:
var dados = area.getvalues();

O Javascript é case sensitive (maiúculas e minúsculas são diferentes). getvalues não existe, getValues sim

Correção 3:
var total = parseFloat(area(linha)[0]);

Erro 1: O Javascript sempre usa colchetes para referenciar arrays. Parênteses representam chamadas de função.
Erro 2: Isso está conceitualmente errado. Você coletou os dados na linha 8, não precisa mais referenciar a area. Isso aqui funciona:

var total = parseFloat(dados[linha][0]);

Correção 4:
guiadados.getRange(linha, +1, 0).setValue(total);

Isso funciona:
guiadados.getRange(linha, 1, 1).setValue(total);

Comentários:
Consegui identificar todos os erros acima através do depurador do próprio Google Apps. Ele não é tao poderoso quando o VBA, mas faz um bom trabalho.

O maior erro está em coletar os dados. A linha 8 pega os dados da coluna A inteira. Isso trás dois problemas.
1 - A linha 20 coloca o resultado na célula A1000 (1000 é o número padrão de linhas de uma sheet to Google Sheets).
2 - Tem células com dados de texto no meio do caminho, por isso, o valor de total acaba sendo NaN (Not a Number).

Recomendo que elabore onde quer colocar o resultado da fórmula. Por enquanto, o código abaixo funciona e mostra o resultado na tela:

Código: Selecionar todos

function Soma() {
  //planilha ativa
  var spreadsheet = SpreadsheetApp.getActive();
  var guiadados = spreadsheet.getSheetByName("Dados");

  var area = guiadados.getRange("B2:B8");

  var dados = area.getValues();

  var total = "0";

  // length ate o final da lista   linha++ aumentando posiçao por posição
  for (var linha = 0; linha < dados.length; linha++) {

    var total = parseFloat(dados[linha][0]);

    total = parseFloat(total) + parseFloat(total);

  }
  // guiadados.getRange(linha, 2, 1).setValue(total);
  Browser.msgBox('O total é', total, Browser.Buttons.OK);
}


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder