Search code examples
javascriptexcelgoogle-apps-scriptgoogle-sheetsconditional-formatting

Conditions problems for Google Sheets scripts


I don't know why my conditions aren't working, the first condition always gives the true output. I'm quite new to this.

function Save() { 
  var Sheet = SpreadsheetApp.getActiveSpreadsheet();
  var shtinput = Sheet.getSheetByName('INPUT');
  var shtdb3 = Sheet.getSheetByName('MARET');
  var shtdb4 = Sheet.getSheetByName('APRIL');
  var shtdb5 = Sheet.getSheetByName('MEI');
  var shtdb6 = Sheet.getSheetByName('JUNI');
  var shtdb7 = Sheet.getSheetByName('JULI');
  var shtdb8 = Sheet.getSheetByName('AGUSTUS');
  var shtdb9 = Sheet.getSheetByName('SEPTEMBER');
  var shtdb10 = Sheet.getSheetByName('OKTOBER');
  var shtdb11 = Sheet.getSheetByName('NOVEMBER');
  var shtdb12 = Sheet.getSheetByName('DESEMBER');
  var nosheet = shtinput.getRange('E5').getValue();
  var pilihsheet = [];
  if (nosheet = 'JANUARI') {
    pilihsheet = Sheet.getSheetByName('JANUARI');
  } else if (nosheet = 'FEBRUARI') {
    pilihsheet = Sheet.getSheetByName('FEBRUARI');
  } else if (nosheet = 'MARET') {
    pilihsheet = Sheet.getSheetByName('MARET');
  } else if (nosheet = 'APRIL') {
    pilihsheet = Sheet.getSheetByName('APRIL');
  } else if (nosheet = 'MEI') {
    pilihsheet = Sheet.getSheetByName('MEI');
  } else if (nosheet = 'JUNI') {
    pilihsheet = Sheet.getSheetByName('JUNI');
  } else if (nosheet = 'JULI') {
    pilihsheet = Sheet.getSheetByName('JULI');
  } else if (nosheet = 'AGUSTUS') {
    pilihsheet = Sheet.getSheetByName('AGUSTUS');
  } else if (nosheet = 'SEPTEMBER') {
    pilihsheet = Sheet.getSheetByName('SEPTEMBER');
  } else if (nosheet = 'OKTOBER') {
    pilihsheet = Sheet.getSheetByName('OKTOBER');
  } else if (nosheet = 'NOVEMBER') {
    pilihsheet = Sheet.getSheetByName('NOVEMBER');
  } else if (nosheet = 'DESEMBER') {
    pilihsheet = Sheet.getSheetByName('DESEMBER');
  }               


  var tgl = shtinput.getRange('E7').getValue();
  var inout = shtinput.getRange('E9').getValue();
  var jumlah = shtinput.getRange('E11').getValue();
  var kategori = shtinput.getRange('E13').getValue();
  var keterangan = shtinput.getRange('E15').getValue();
  var sumber = shtinput.getRange('E17').getValue();

  var baris = pilihsheet.getRange('H3').getValue();
  baris += 1;
  var rangeisi = pilihsheet.getRange('A' + baris + ':F'+ baris);
  rangeisi.setValues([[tgl,inout,jumlah,kategori,keterangan,sumber]]);
  
  bersih();
}

function bersih() {
  var Sheet = SpreadsheetApp.getActiveSpreadsheet();
  var shtinput = Sheet.getSheetByName('Input');
  
  shtinput.getRange('E5').clearContent();
  shtinput.getRange('E9').clearContent();
  shtinput.getRange('E11').clearContent();
  shtinput.getRange('E13').clearContent();
  shtinput.getRange('E15').clearContent();
  shtinput.getRange('E17').clearContent();
  
}

Solution

  • In your IF statement you are actually assigning values to the variable nosheet:

    if (nosheet = 'JANUARI') {
    

    Change to this and you should be fine:

    if (nosheet == 'JANUARI') {
    

    Some people prefer to use "===" which also compare data types

    if (nosheet === 'JANUARI') {
    

    Also, watch for variables, they are case sensitive, most folks use camel case to keep things straight

    So instead of:

    var shtinput = Sheet.getSheetByName('INPUT');
    

    Consider:

    var shtInput = Sheet.getSheetByName('INPUT');