Google Sheets Custom Code EDIT
Budget: $10 – $30 USD
I have a custom code that copies cell values in to other sheets and the other part does a lookup from "customer contact list" column h (if NOT ACTIVE YET) then it takes column A in the same sheet and then looks at the "Main" sheet column a and appends to the next cell which doesnt have data ONLY if it doesnt exist in the "Main" column a. So this second part is working fine however only when MANUALLY TRIGGERED. The onedit function is a simple trigger which doesnt work with dynamic updates.
The requirement is to edit my code to be simpler and to get on screen share with me while we solve it.
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSheet();
var ssName = ss.getName();
if (ssName == "Main") {
copyCompany();
} else if (ssName == "Corporate Tax" || ssName == "LLC Tax" || ssName == "SalesTax" || ssName == "PayrollTax" || ssName == "Bookkeeping" || ssName == "MonthlyDeposits") {
updateModifiedDate();
} else if (ssName == "Customer Contact List" && e.range.getColumn() == 8 && e.value == "NOT ACTIVE YET") {
Logger.log("Editing in Customer Contact List. Column: " + e.range.getColumn() + ", Value: " + e.value);
appendToMain(e); // Call a new function to handle appending to Main
}
}
function copyCompany() {
var mainSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Main");
var mainSheetColA = mainSheet.getRange("A1:A1000").getValues();
var salesTaxSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SalesTax");
salesTaxSheet.getRange("A1:A1000").setValues(mainSheetColA);
var payrollTaxSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PayrollTax");
payrollTaxSheet.getRange("A1:A1000").setValues(mainSheetColA);
var corporateTaxSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Corporate Tax");
corporateTaxSheet.getRange("A1:A1000").setValues(mainSheetColA);
var llcTaxSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("LLC Tax");
llcTaxSheet.getRange("A1:A1000").setValues(mainSheetColA);
var bookkeeping = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Bookkeeping");
bookkeeping.getRange("A1:A1000").setValues(mainSheetColA);
var mdeposits = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MonthlyDeposits");
mdeposits.getRange("A1:A1000").setValues(mainSheetColA);
}
function updateModifiedDate() {
var ss = SpreadsheetApp.getActiveSheet();
var r = ss.getActiveCell();
var columnNumber = r.getColumn();
var rowNumber = r.getRow();
if (((columnNumber == 2 || columnNumber == 4 || columnNumber == 6 || columnNumber == 8 || columnNumber == 10 || columnNumber == 12 || columnNumber == 14 || columnNumber == 16 || columnNumber == 18 || columnNumber == 20 || columnNumber == 22 || columnNumber == 24) && ( ss.getName()=="SalesTax" || ss.getName()=="MonthlyDeposits" ))) {
ss.getRange(rowNumber, columnNumber + 1).setValue(new Date()).setNumberFormat("MM/dd/yyyy hh:mm");
} else if ((columnNumber == 2 || columnNumber == 4 || columnNumber == 6 || columnNumber == 8) && ( ss.getName()=="PayrollTax" || ss.getName()=="LLC TAX" )) {
ss.getRange(rowNumber, columnNumber + 1).setValue(new Date()).setNumberFormat("MM/dd/yyyy hh:mm");
}
}
function appendToMain(e) {
Logger.log("Editing in Customer Contact List. Column: " + e.range.getColumn() + ", Value: " + e.value);
if (e.value != "NOT ACTIVE YET") {
return; // Exit if the edited value is not "NOT ACTIVE YET"
}
var mainSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Main");
var sourceValue = e.range.offset(0, -7).getValue(); // Get value from column A in the same row
// Check if the value already exists in Main sheet
var columnAValues = mainSheet.getRange('A:A').getValues();
for (var i = 0; i < columnAValues.length; i++) {
if (columnAValues[i][0] === sourceValue) {
Logger.log("Value already exists in Main sheet.");
return; // Exit if value is found
}
}
// Append to the first empty cell in column A of Main
var firstEmptyRow = findFirstEmptyRow(mainSheet);
if (firstEmptyRow !== -1) {
mainSheet.getRange(firstEmptyRow, 1).setValue(sourceValue);
Logger.log("Data appended successfully at row " + firstEmptyRow);
} else {
Logger.log("No empty cell found in Main column A.");
}
}
function findFirstEmptyRow(sheet) {
var columnA = sheet.getRange('A:A').getValues();
for (var i = 0; i < columnA.length; i++) {
if (columnA[i][0] == "" || columnA[i][0] == null) {
return i + 1;
}
}
return -1;
}
function processHourlyUpdates() {
var customerContactSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Customer Contact List");
var dataRange = customerContactSheet.getDataRange();
var data = dataRange.getValues();
for (var i = 0; i < data.length; i++) {
var row = data[i];
var status = row[7]; // Assuming status is in column H
if (status == "NOT ACTIVE YET") {
// Simulate an edit event object
var simulatedEvent = {
range: customerContactSheet.getRange(i + 1, 8),
value: status
};
appendToMain(simulatedEvent);
}
}
// Call copyCompany() if necessary
copyCompany();
}
function createHourlyTrigger() {
ScriptApp.newTrigger('processHourlyUpdates')
.timeBased()
.everyMinutes(1)
.create();
}
The requirement is to edit my code to be simpler and to get on screen share with me while we solve it.
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSheet();
var ssName = ss.getName();
if (ssName == "Main") {
copyCompany();
} else if (ssName == "Corporate Tax" || ssName == "LLC Tax" || ssName == "SalesTax" || ssName == "PayrollTax" || ssName == "Bookkeeping" || ssName == "MonthlyDeposits") {
updateModifiedDate();
} else if (ssName == "Customer Contact List" && e.range.getColumn() == 8 && e.value == "NOT ACTIVE YET") {
Logger.log("Editing in Customer Contact List. Column: " + e.range.getColumn() + ", Value: " + e.value);
appendToMain(e); // Call a new function to handle appending to Main
}
}
function copyCompany() {
var mainSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Main");
var mainSheetColA = mainSheet.getRange("A1:A1000").getValues();
var salesTaxSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SalesTax");
salesTaxSheet.getRange("A1:A1000").setValues(mainSheetColA);
var payrollTaxSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PayrollTax");
payrollTaxSheet.getRange("A1:A1000").setValues(mainSheetColA);
var corporateTaxSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Corporate Tax");
corporateTaxSheet.getRange("A1:A1000").setValues(mainSheetColA);
var llcTaxSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("LLC Tax");
llcTaxSheet.getRange("A1:A1000").setValues(mainSheetColA);
var bookkeeping = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Bookkeeping");
bookkeeping.getRange("A1:A1000").setValues(mainSheetColA);
var mdeposits = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MonthlyDeposits");
mdeposits.getRange("A1:A1000").setValues(mainSheetColA);
}
function updateModifiedDate() {
var ss = SpreadsheetApp.getActiveSheet();
var r = ss.getActiveCell();
var columnNumber = r.getColumn();
var rowNumber = r.getRow();
if (((columnNumber == 2 || columnNumber == 4 || columnNumber == 6 || columnNumber == 8 || columnNumber == 10 || columnNumber == 12 || columnNumber == 14 || columnNumber == 16 || columnNumber == 18 || columnNumber == 20 || columnNumber == 22 || columnNumber == 24) && ( ss.getName()=="SalesTax" || ss.getName()=="MonthlyDeposits" ))) {
ss.getRange(rowNumber, columnNumber + 1).setValue(new Date()).setNumberFormat("MM/dd/yyyy hh:mm");
} else if ((columnNumber == 2 || columnNumber == 4 || columnNumber == 6 || columnNumber == 8) && ( ss.getName()=="PayrollTax" || ss.getName()=="LLC TAX" )) {
ss.getRange(rowNumber, columnNumber + 1).setValue(new Date()).setNumberFormat("MM/dd/yyyy hh:mm");
}
}
function appendToMain(e) {
Logger.log("Editing in Customer Contact List. Column: " + e.range.getColumn() + ", Value: " + e.value);
if (e.value != "NOT ACTIVE YET") {
return; // Exit if the edited value is not "NOT ACTIVE YET"
}
var mainSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Main");
var sourceValue = e.range.offset(0, -7).getValue(); // Get value from column A in the same row
// Check if the value already exists in Main sheet
var columnAValues = mainSheet.getRange('A:A').getValues();
for (var i = 0; i < columnAValues.length; i++) {
if (columnAValues[i][0] === sourceValue) {
Logger.log("Value already exists in Main sheet.");
return; // Exit if value is found
}
}
// Append to the first empty cell in column A of Main
var firstEmptyRow = findFirstEmptyRow(mainSheet);
if (firstEmptyRow !== -1) {
mainSheet.getRange(firstEmptyRow, 1).setValue(sourceValue);
Logger.log("Data appended successfully at row " + firstEmptyRow);
} else {
Logger.log("No empty cell found in Main column A.");
}
}
function findFirstEmptyRow(sheet) {
var columnA = sheet.getRange('A:A').getValues();
for (var i = 0; i < columnA.length; i++) {
if (columnA[i][0] == "" || columnA[i][0] == null) {
return i + 1;
}
}
return -1;
}
function processHourlyUpdates() {
var customerContactSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Customer Contact List");
var dataRange = customerContactSheet.getDataRange();
var data = dataRange.getValues();
for (var i = 0; i < data.length; i++) {
var row = data[i];
var status = row[7]; // Assuming status is in column H
if (status == "NOT ACTIVE YET") {
// Simulate an edit event object
var simulatedEvent = {
range: customerContactSheet.getRange(i + 1, 8),
value: status
};
appendToMain(simulatedEvent);
}
}
// Call copyCompany() if necessary
copyCompany();
}
function createHourlyTrigger() {
ScriptApp.newTrigger('processHourlyUpdates')
.timeBased()
.everyMinutes(1)
.create();
}