简体   繁体   中英

Google Apps Script: Script function not found: FormatCWR

I am trying to build a function that formats certain columns of a tab (a sheet within the main sheet) that is titled "Responses - DO NOT EDIT." However, every time I run the script from the menu, I receive the error message: "Script function not found: FormatCWR."
Here's the code, that I've frankensteined...

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{name:"FormatCWR", functionName:"FormatCWR"}];
  ss.addMenu("Scripts", entries);
  FormatCRW()
}
function FormatCRW() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetCWR = ss.getSheetByName("Responses - DO NOT EDIT");
  var data = sheetCWR.getDataRange().getValues();
  var newData = new Array();
  for(i in data){
    sheetCWR.getRange('H2:H').setNumberFormat("mm/dd/yyyy");
    sheetCWR.getRange('J2:J').setNumberFormat('$0.00');
    sheetCWR.getRange('K2:K').setNumberFormat('$0.00');
    sheetCWR.getRange('R2:R').setNumberFormat('$0.00');
    sheetCWR.getRange('BD2:BD').setNumberFormat('$0.00');
    sheetCWR.getRange('BG2:BG').setNumberFormat('$0.00');
    sheetCWR.getRange('BJ2:BJ').setNumberFormat('$0.00');
    sheetCWR.getRange('S2:S').setNumberFormat('[h]:[m]:[s]');
    sheetCWR.getRange('T2:T').setNumberFormat('[h]:[m]:[s]');
    sheetCWR.getRange('BO2:BO').setNumberFormat('[h]:[m]:[s]');
    break;
  }
};

I assume the function is in a ".gs" file and that it really is there. So it's possible that something is wrong somewhere else. I know a lot people make their menus in a manner that is similar to what you're doing. However, I like doing it this way.

SpreadsheetApp.getUi().createMenu('Scripts')
    .addItem('Format','FormatCRW')
    .addToUi();

Maybe this will help...Maybe not.

I'm probably missing something here but this function makes no sense to me.

  function FormatCRW() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetCWR = ss.getSheetByName("Responses - DO NOT EDIT");
  var data = sheetCWR.getDataRange().getValues();
  var newData = new Array();//Not used at all
  for(i in data){//Why are you looping on every row in the data range when all of the ranges cover all of the rows?
    sheetCWR.getRange('H2:H').setNumberFormat("mm/dd/yyyy");
    sheetCWR.getRange('J2:J').setNumberFormat('$0.00');
    sheetCWR.getRange('K2:K').setNumberFormat('$0.00');
    sheetCWR.getRange('R2:R').setNumberFormat('$0.00');
    sheetCWR.getRange('BD2:BD').setNumberFormat('$0.00');
    sheetCWR.getRange('BG2:BG').setNumberFormat('$0.00');
    sheetCWR.getRange('BJ2:BJ').setNumberFormat('$0.00');
    sheetCWR.getRange('S2:S').setNumberFormat('[h]:[m]:[s]');
    sheetCWR.getRange('T2:T').setNumberFormat('[h]:[m]:[s]');
    sheetCWR.getRange('BO2:BO').setNumberFormat('[h]:[m]:[s]');
    break;//Why have a loop if your going to break out the very first time?
  }
};

It would make a little more sense this way

function FormatCRW() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetCWR = ss.getSheetByName("Responses - DO NOT EDIT");
  sheetCWR.getRange('H2:H').setNumberFormat("mm/dd/yyyy");
  sheetCWR.getRange('J2:J').setNumberFormat('$0.00');
  sheetCWR.getRange('K2:K').setNumberFormat('$0.00');
  sheetCWR.getRange('R2:R').setNumberFormat('$0.00');
  sheetCWR.getRange('BD2:BD').setNumberFormat('$0.00');
  sheetCWR.getRange('BG2:BG').setNumberFormat('$0.00');
  sheetCWR.getRange('BJ2:BJ').setNumberFormat('$0.00');
  sheetCWR.getRange('S2:S').setNumberFormat('[h]:[m]:[s]');
  sheetCWR.getRange('T2:T').setNumberFormat('[h]:[m]:[s]');
  sheetCWR.getRange('BO2:BO').setNumberFormat('[h]:[m]:[s]');
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM