
I have three scripts that are in a Google Docs spreadsheet. In this table, in column H (or column 8 ), if I type x , the script will change it to that date of the day.
After a few days, each date in column H changed from a date to a number . The numbers look like this: 40492, 40494, 40511 .
I am not sure what causes this. Maybe this is something wrong in my script. I inserted them below. Any ideas?
Here is the first one:
function onEdit(e) { var colorA = "yellow"; var colorB = "#dddddd"; var colorC = "#dddddd"; var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Purchase Orders"); var range = e.source.getActiveRange(); var sheetName = SpreadsheetApp.getActiveSheet().getName(); if (sheetName == "Purchase Orders") { // 3 is column C if (range.getColumn() == 7 && range.getValue() != "") { var r = range.getRow() + 1; sheet.getRange("A" + r + ":G" + r).setBackgroundColor(colorC); } } var col = e.source.getActiveRange().getColumn(); if(col == 8 || col == 7) { var rows = sheet.getMaxRows(); //column C var rangeC = sheet.getRange("H1:H"+rows); var valuesC = rangeC.getValues(); //column H range var rangeH = sheet.getRange("G1:G"+rows); var colorH = rangeH.getBackgroundColors(); var valuesH = rangeH.getValues(); //iterate over each row in column C and H //then change color for (var row = 0; row < valuesC.length; row++) { //check for columnC and column H var hRow = colorH[row]; if (valuesC[row][0] != "" && valuesH[row][0] == "") { hRow[0] = colorA; } else if (valuesH[row][0] != "") { hRow[0] = colorB; } } sheet.getRange("G1:G" + rows).setBackgroundColors(colorH); } }
Here's the second one:
function onEdit(e) { var colorA = "yellow"; var colorB = "#dddddd"; var colorC = "#dddddd"; var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Purchase Orders"); var range = e.source.getActiveRange(); var sheetName = SpreadsheetApp.getActiveSheet().getName(); if (sheetName == "Purchase Orders") { // 3 is column C if (range.getColumn() == 3 && range.getValue() != "") { sheet.insertRowAfter(range.getRow()); var r = range.getRow() + 1; sheet.getRange("A" + r + ":H" + r).setBackgroundColor(colorC); } } var col = e.source.getActiveRange().getColumn(); if(col == 3 || col == 8) { var rows = sheet.getMaxRows(); //column C var rangeC = sheet.getRange("C1:C"+rows); var valuesC = rangeC.getValues(); //column H range var rangeH = sheet.getRange("H1:H"+rows); var colorH = rangeH.getBackgroundColors(); var valuesH = rangeH.getValues(); //iterate over each row in column C and H //then change color for (var row = 0; row < valuesC.length; row++) { //check for columnC and column H var hRow = colorH[row]; if (valuesC[row][0] != "" && valuesH[row][0] == "") { hRow[0] = colorA; } else if (valuesH[row][0] != "") { hRow[0] = colorB; } } sheet.getRange("H1:H" + rows).setBackgroundColors(colorH); } }
Here's the third one:
function onEdit(e) { var ss = e.source.getActiveSheet(); var r = e.source.getActiveRange(); //1 is A, 2 is B, ... 8 is H if (r.getColumn() == 8 && r.getValue() == "x") { r.setNumberFormat("MM/dd/yyyy") r.setValue(Utilities.formatDate(new Date(), "MST", "yyyy-MM-dd")); } }
David source share