Agregar valor de la celda de una columna a una celda específica basada en las notas de la célula

0

Pregunta

Yo estaba jugando con Apps Script para probar y añadir el valor de una celda en una columna específica (C4:C14) en mi hoja de cálculo para la celda C15 cuando hay una Nota que dice "pagado"

He leído a través de la documentación de la Gama de Clase y fue capaz de obtener los valores de las notas, así como el valor de las celdas en el rango de celdas (C4:C14), pero soy incapaz de establecer la suma basado en el contenido de la Inserción de la Nota en Hojas de cálculo de Google.

Aquí está el código que he trabajado hasta la fecha, así como la captura de pantalla de mi hoja. enter image description here

function getPaid () {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var range = sheet.getRange("C4:C14");
  var rangeval = range.getValues();

  Logger.log(rangeval);
  var comments = range.getNotes();

  for (var i = 0; i > range.length; i++) {
    if ( range.getNotes()[i] === "paid" ) {
      sheet.getRange('C15').setValue(0 + rangeval[i]);
      
    }
  Logger.log(range.getNotes[i]);
  }
  
  Logger.log(comments);

}
google-apps-script google-sheets
2021-11-24 06:23:43
2

Mejor respuesta

2

Aquí tienes también sugiero ver si los bloques están siendo ejecutados o no, por ejemplo, el bucle for no estaba siendo llamado debido a una variable incorrecta. También recuerde siempre hojas de cálculo de Google siempre regreso Matriz 2d.

function getPaid () {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheets()[0];
    
      var range = sheet.getRange("C4:C14");
      var rangeval = range.getValues();
      var comments = range.getNotes();
      var sum = 0;
      for (var i = 0; i < rangeval.length; i++) {
       
        if ( comments[i][0] === "paid" ) {
    
          sum = sum+rangeval[i][0];
        }
      }
      sheet.getRange('C15').setValue(sum)
    
    }
2021-11-24 12:22:28
0

Más bien con fines educativos aquí es un 'funcional' solución:

function myFunction() {
  var sh = SpreadsheetApp.getActiveSheet();

  var range = sh.getRange('c4:c14'); 
  var data  = range.getValues().flat(); // get all data in one step
  var notes = range.getNotes().flat();  // get all notes in one step

  var paid = data.filter((_,i) => notes[i] === 'paid'); // get paid values
  var sum  = paid.reduce((a,b) => a+b);                 // sum of the array

  sh.getRange('c15').setValue(sum); // set the sum into the cell C15
}
2021-11-24 07:20:46

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................