Google脚本+电子表格+打开时将整个表格转换为大写

时间:2019-11-02 02:30:06

标签: google-apps-script google-sheets

我想知道如何在每次加载时将整个电子表格转换为大写

我是在onEdit上完成的,但是只有我编辑的单元格

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

谢谢!

2 个答案:

答案 0 :(得分:2)

  • 您要将电子表格中所有单元格中的所有值都转换为大写。
  • 您要在电子表格打开时运行脚本。

如果我的理解是正确的,那么该示例脚本如何?请认为这只是几个答案之一。

示例脚本:

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);
    }
    

参考文献:

如果我误解了您的问题,而这不是您想要的方向,我深表歉意。

答案 1 :(得分:0)

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) 
          {
          }
        }
      }
  }
}