Автоматически переименовывать Google Spreadsheet - PullRequest
1 голос
/ 26 февраля 2020
function tabellenblattUmbenennen(){
 var oldSpreadsheetName="Perso2";
 var newSpreadsheetName="C7";
 SpreadsheetApp.getActiveSpreadsheet().getSheetByName(oldSpreadsheetName).setName(newSpreadsheetName); 
}

Как мне изменить скрипт, чтобы имя из строки xy таблицы C2 использовалось для переименования таблицы. И все это должно go вернуться назад.

Или вы можете отредактировать этот скрипт так, чтобы он мог выполнять переименование автоматически? Ссылка на имя в C2 затем.

 // Wird bei Änderung einer Zelle automatisch ausgeführt
    function onEdit(e){ 

    // Aufrufen der Funktion zum Sortieren
      neueSortierung(); 

    } 

    // Funktion welche die Einträge sortiert 
    function neueSortierung(){ 

      // Auf das aktive Tabellendokument zugreifen
      var ss = SpreadsheetApp.getActiveSpreadsheet();

      // Auf das aktive Tabellenblatt zugreifen
      var sheet = ss.getActiveSheet();

      // Den Bereich der sortiert werden soll festlegen
      var range = sheet.getRange("A4:E999"); 

      // Den vorher sortierten Bereich nach Spalte 2 sortieren
      range.sort([ {column: 5, ascending: true}]);

    }

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

Извините за плохой перевод. Так как я не могу говорить по-английски sh, мне пришлось сделать это с помощью Google Translate.

1 Ответ

1 голос
/ 26 февраля 2020

Проблема

Я полагаю, что это то, что вы пытаетесь достичь из своего объяснения:

Измените имя листа в зависимости от значения динамического c указанного c ячейка (в вашем случае C2)

Решение

Если лист является нашим активным листом

Вот фрагмент кода для достижения этой цели. Там есть комментарии, которые объяснят вам каждую его часть:

function onEdit() {
  
  // get the active sheet of the spreadsheet
  var sheet = SpreadsheetApp.getActiveSheet();
  
  // get the cell value even after been edited
  var cellValue = sheet.getRange('C2').getValue();
  
  // rename the sheet according to that value
  sheet.setName(cellValue);
}

Если лист является конкретным c листом, который мы хотим переименовать

Вот фрагмент кода для достижения этого. Там есть комментарии, которые объяснят вам каждую его часть:

function onEdit() {
  
  // get all the sheets in the active spreadsheet
  var sheets = SpreadsheetApp.getActive().getSheets();
  
  // go over every sheet and check if it matches the id of the one we want to change the name
  for (i=0;i<sheets.length;i++){
    
    // if the id matches select that as our sheet 
    if(sheets[i].getSheetId()=="0.0"){
      var sheet = sheets[i];
    }
    
  }  
  // get the cell value even after been edited
  var cellValue = sheet.getRange('C2').getValue();
  
  // rename the sheet according to that value
  sheet.setName(cellValue);
}

Если вы хотите изменить имена нескольких листов по отношению к значениям ячеек столбца одного листа (как указано вами c case)

function onEdit() {
  
  // get all the sheets in the active spreadsheet
  var sheets = SpreadsheetApp.getActive().getSheets();
  
  // Get sheet containing all names (in this case the first sheet)
  var sheetWithNames = sheets[0];
  
  // go over every sheet and assign the name of the appropiate cell of the first sheet
  for (i=1;i<sheets.length;i++){
    sheets[i].setName(sheetWithNames.getRange(i+1, 2).getValue());  
  }  

}

Надеюсь, это помогло вам. Дайте мне знать, если вам нужно что-то еще или вы что-то не поняли. Гутен Абенд! :)

...