Aggiungere il valore di una cella di una colonna a una cella specifica basata sulle note della cella

0

Domanda

Stavo giocando con Apps Script per cercare e aggiungere il valore di una cella in una colonna specifica (C4:C14) nel mio foglio di calcolo per cella C15 quando c'è una Nota che dice 'pagato'

Ho letto la documentazione della Gamma di Classe ed è stato in grado di ottenere i valori delle note, così come il valore delle celle in un intervallo di celle (C4:C14), ma non riesco a impostare la somma in base al contenuto di Inserire Nota su Google Fogli.

Ecco il codice che ho lavorato finora, come pure lo screenshot del mio foglio. 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

Migliore risposta

2

Qui si va anche vorrei suggerire di vedere se i blocchi sono in fase di esecuzione o non, per esempio, il ciclo for non era stato chiamato per la variabile sbagliata. Inoltre, ricordate sempre di Google fogli di sempre tornare a Matrice 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

Piuttosto per scopi didattici ecco un 'funzionale' soluzione:

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

In altre lingue

Questa pagina è in altre lingue

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