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
Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Script Soma - Google planilhas
-
- Colaborador
- Mensagens: 15
- Registrado em: Ter Dez 20, 2016 1:27 pm
Re: Script Soma - Google planilhas
A planilha está protegida. Pode deixar ela pública de alguma forma?
-
- Colaborador
- Mensagens: 15
- Registrado em: Ter Dez 20, 2016 1:27 pm
Re: Script Soma - Google planilhas
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:
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);
}