Скрипт Google для автоматического переключения листов / вкладок с условным - PullRequest
0 голосов
/ 09 мая 2020

Мне трудно написать gscript для переключения между вкладками, что бы я ни делал, всегда "Janeiro" - это вкладка, заполненная информацией: / Что-то не так с условным кодом?

function EntradaDespesa() {
  var spreadsheet = SpreadsheetApp.getActive();
  var source = spreadsheet.getRange("Entrada!B3:I3");
  var mes = spreadsheet.getRange('Entrada!J3')

//Janeiro
  if(mes==1){
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Janeiro").activate();
    spreadsheet.getRange('Janeiro!B29').activate();

    var col = spreadsheet.getRange('Janeiro!B29:B117');
    var values = col.getValues();
    var ct = 0;
    while ( values[ct] && values[ct][0] != "" ) {
    ct++;
   }
   var range = spreadsheet.getRange(ct+29,2);
   spreadsheet.setActiveRange(range);

    source.copyTo (spreadsheet.setActiveRange(range), {contentsOnly: true});
    source.clear ();
  }


//Fevereiro  
  else if(mes==2){
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Fevereiro").activate();
    spreadsheet.getRange('Fevereiro!B29').activate();

    var col = spreadsheet.getRange('Fevereiro!B29:B117');
    var values = col.getValues();
    var ct = 0;
    while ( values[ct] && values[ct][0] != "" ) {
      ct++;
    }
    var range = spreadsheet.getRange(ct+29,2);
    spreadsheet.setActiveRange(range);

    source.copyTo (spreadsheet.setActiveRange(range), {contentsOnly: true});
    source.clear ();
  }

    Browser.msgBox("Despesa computada!");
   }

1 Ответ

0 голосов
/ 11 мая 2020

Переменная spreadsheet объявлена ​​в верхней части кода, и вы используете ее, активировав несколько листов. Я не уверен, что это должно работать так, как вы ожидаете, но гораздо лучше объявить две переменные в таблицах и использовать их отдельно:

function EntradaDespesa() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var source = spreadsheet.getRange("Entrada!B3:I3");

  var janeiroSheet = spreadsheet.getSheetByName('Janeiro');
  var fevereiroSheet = spreadsheet.getSheetByName('Fevereiro');

Удалить строки

SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Janeiro").activate();
    spreadsheet.getRange('Janeiro!B29').activate();

Так как нет необходимости активировать Таблицы каждый раз, когда вы их используете. То же самое для второго месяца.


Тогда вместо

 var range = spreadsheet.getRange(ct+29,2);
   spreadsheet.setActiveRange(range);

можно сделать

var range = janeiroSheet.getRange(ct+29,2);

и то же самое для fevereiro. Вам также не нужно активировать диапазоны.


Чтобы записать значения в желаемый лист, используйте janeiroSheet.getRange(range).setValues(col)

Вы должны прочитать Quickstart и попробуйте сделать это, чтобы узнать больше об использовании этих методов.

Ссылки

...