At the moment i have the following script that runs automatically when cell D2 is edited
My issue is that it takes 6-8 seconds to run but staff do not know if is running
am i able to have a popup come up when it starts saying "running script" like it does if you assign the script to a button?
function onEdit(e) { var sheet = e.source.getSheetByName("Input1"); if (sheet && e.range.getA1Notation() === "D2") { searchData(); } }
function searchData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var inputSheet = ss.getSheetByName("Input1");
var dataSheet = ss.getSheetByName("Job Sheet");
var jobnumber = inputSheet.getRange("D2").getValue();
// Check if Job number field is empty
if (!jobnumber) {
SpreadsheetApp.getUi().alert('Enter a Job number.');
return;
}
var dataRange = dataSheet.getDataRange().getValues();
var found = false;
for (var i = 0; i < dataRange.length; i++) {
if (dataRange[i][0] == jobnumber) {
found = true;
inputSheet.getRange("D4").setValue(dataRange[i][1]);
inputSheet.getRange("D6").setValue(dataRange[i][2]);
inputSheet.getRange("D8").setValue(dataRange[i][3]);
inputSheet.getRange("D10").setValue(dataRange[i][4]);
inputSheet.getRange("D12").setValue(dataRange[i][5]);
inputSheet.getRange("D14").setValue(dataRange[i][6]);
inputSheet.getRange("D16").setValue(dataRange[i][7]);
inputSheet.getRange("D18").setValue(dataRange[i][8]);
inputSheet.getRange("D20").setValue(dataRange[i][9]);
inputSheet.getRange("D22").setValue(dataRange[i][10]);
inputSheet.getRange("D24").setValue(dataRange[i][11]);
inputSheet.getRange("D26").setValue(dataRange[i][13]);
inputSheet.getRange("D28").setValue(dataRange[i][14]);
inputSheet.getRange("D30").setValue(dataRange[i][15]);
inputSheet.getRange("A34").setValue(jobnumber);
break;
}
}
if (!found) {
SpreadsheetApp.getUi().alert('Job number not found.');
}
}
Maybe you can use "toast"
that runs a small box in the bottom right corner. You can set these parameters:
toast(msg, title, timeoutSeconds)
Like this:
SpreadsheetApp.getActive().toast("Please wait 10 seconds","The process is running",10)
You can't set it to wait until the process is finished, but the user will know it's done.
Other option is to use a cell as a reference for the user. In the beginning of the code, you can write something like:
inputSheet.getRange("H1").setValue("Process Running").setBackground("yellow")
And at the end of searchData:
inputSheet.getRange("H1").setValue("Process Finished").setBackground("green")