Google Script + электронная таблица + конвертировать весь лист в верхний регистр при открытом - PullRequest
2 голосов
/ 02 ноября 2019

Я хотел бы знать, как преобразовать всю электронную таблицу в верхний регистр при каждой загрузке

Я сделал это в редакторе, но только ячейку, которую я редактирую

function onEdit(e) {
  if (typeof e.value != 'object') {
    e.range.setValue(e.value.toUpperCase());
  }
}

Спасибо !!

Ответы [ 2 ]

2 голосов
/ 02 ноября 2019
  • Вы хотите преобразовать все значения во всех ячейках электронной таблицы в верхний регистр.
  • Вы хотите запустить сценарий при открытии электронной таблицы.

Еслимое понимание верно, как насчет этого образца сценария? Пожалуйста, подумайте об этом как об одном из нескольких ответов.

Пример сценария:

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();
  sheets.forEach(function(sheet) {
    var range = sheet.getDataRange();
    var values = range.getValues().map(function(row) {return row.map(function(col) {return typeof col == "string" ? col.toUpperCase() : col})});
    range.setValues(values);
  });
}
  • В этой функции используется простой триггер. Поэтому при открытии электронной таблицы onOpen() запускается триггером события OnOpen.
  • В этом примере сценария объект события не используется. Таким образом, вы можете напрямую запустить функцию onOpen() с помощью редактора сценариев.

Примечание:

  • При запуске сценария все значения всех ячеекпреобразованы. Поэтому, когда вы проверяете это, пожалуйста, будьте осторожны с этим. Я рекомендую подготовить образец таблицы.
  • Если вы хотите преобразовать значения в конкретном листе, как насчет следующего сценария?

    function onOpen() {
      var sheetName = "###"; // Please set the sheet name here.
    
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName(sheetName);
      var range = sheet.getDataRange();
      var values = range.getValues().map(function(row) {return row.map(function(col) {return typeof col == "string" ? col.toUpperCase() : col})});
      range.setValues(values);
    }
    

Ссылки:

Если я неправильно понял ваш вопрос, и это не былонаправление, которое вы хотите, я прошу прощения.

0 голосов
/ 02 ноября 2019
function ScriptOnLoad()
{
  var spreadsheet = SpreadsheetApp.getActive();
  var mysheet=spreadsheet.getActiveSheet();

  if (mysheet.getSheetName()!='SheetB') return;
  var rowCount=mysheet.getLastRow();
  var colCount=mysheet.getLastColumn();

  for (row=1; row<rowCount+1;row++)
  {
      for (col=1; col<colCount+1;col++)
      {
        var myFormula=mysheet.getRange(row, col).getFormula();
        if (myFormula!="")
        {
          //Make as comment if formula will let as is
          mysheet.getRange(row, col).setFormula( myFormula.toUpperCase()  );
        }
        else
        {
          var myFormula=mysheet.getRange(row, col).getValue();
          try 
          {
             mysheet.getRange(row, col).setValue( myFormula.toUpperCase() );
          }
          catch(err) 
          {
          }
        }
      }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...