Přidat hodnotu buňky sloupce na konkrétní buňky na základě poznámky buňky

0

Otázka

Jsem hrál s Aplikací Skript vyzkoušet a přidat hodnotu buňky v určitém sloupci (C4:C14) ve své tabulky do buňky C15, když tam je Poznámka, která říká, že "zaplaceno"

Pročetl jsem dokumentaci Třídy Dosahu a byl schopen získat hodnoty poznámky, stejně jako hodnota z buňky do buňky range (C4:C14), ale nejsem schopen nastavit částku podle obsahu Vložit Poznámku na Google Listy.

Tady je ten kód, co jsem pracoval tak daleko, stejně jako screenshot z mého listu. 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

Nejlepší odpověď

2

Tady máš také navrhoval bych vidět, jestli vaše bloky jsou prováděny, nebo ne, například, vaše pro smyčce nebyl povolán kvůli špatné proměnné. Také vždy pamatujte, Google listy vždy vrátit 2d Pole.

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

Spíše pro vzdělávací účely, zde je "funkční" řešení:

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

V jiných jazycích

Tato stránka je v jiných jazycích

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