Скрипт листов Google работает на некоторых вкладках, а на других нет - PullRequest
1 голос
/ 03 ноября 2019

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

Вот параФункции сортировки, которые работают, но не на вкладках, с которыми мне нужно работать:

function onEdit(event) {
  // assumes source data in sheet named Active
  // target sheet of move to named Completed
  // getColumn with check-boxes is currently set to colu 8 or H
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  //sort Active by oldest date at the top, using column D or 4
  
  var sheet = event.source.getActiveSheet();
  var editedCell = sheet.getActiveCell();
  var columnToSortBy = 4;
  var tableRange = "A2:T99"; // What to sort.

  if(editedCell.getColumn() == columnToSortBy){   
    var range = sheet.getRange(tableRange);
    range.sort( { column : columnToSortBy, ascending: true } );
  }
  
} 

А:

function myFunction() 
{
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Active");
  var rows = sheet.getLastRow();
  var columns = sheet.getLastColumn();

  var sortedValues = sheet.getRange(2, 1, rows-1, columns).getValues().sort();

  sheet.getRange(2, 1, rows-1, columns).setValues(sortedValues);
}

Сортировка работает на вкладках с именами на них, но не на вкладках с именами Активные и Завершенные. С помощью автоматизации я избавляюсь от названных вкладок, и у нас будут только Active и Complete.

Я удалил передачу после завершения функции, так как она работала просто отлично, и я просто фокусируюсьна сортировку, так как кажется, что это проблема.

Есть предложения, почему две вкладки не сортируются? Вот копия таблицы, над которой я работаю: https://docs.google.com/spreadsheets/d/17VeCzfqAclxUN-kVIrWZSII-7clsNfttmVVU8s0JhFs/edit?usp=sharing

РЕДАКТИРОВАТЬ: решено Купером ниже. Финальная версия кода, которая работала для моих нужд:

function onEdit(event) {
  var sh=SpreadsheetApp.getActive().getSheetByName("Active");
  sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn()).sort({column:4,ascending:true});
}

1 Ответ

1 голос
/ 03 ноября 2019

Попробуйте выполнить сортировку по столбцу 4:

function myFunction() {
  var sh=SpreadsheetApp.getActive().getSheetByName("Active");
  sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn()).sort({column:4,ascending;true});
}

Сортировка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...