Hàm onedit e và onchange e google sheet
Hello all, Show I have a bit of a technical question about Appsheets way of editing the Google Spreadsheet that it uses for it’s Database. I’m writing some Google Script on the Spreadsheet I’m using as Database for the App I’m making in Appsheet. It’s meant to send an email when a New Row is Added. The Script works great, but when Adding a New Row by filling in a Form through the Appshet App it doesn’t fire the script onEdit or onChange as it would if that New Row was added via a Google Form. Am I wrong on this, or is this true in your experience as well? My workaround, in case anyone is looking for solutions here, is that I made a Mark column (“sent” or empty). Then I run the script as TimeDriven every half hour and check for the last 10 rows with data from the bottom to the top of the spreadsheet, then check for the mark and if it’s not sent then fire the “SendEmail” function and mark the column “Sent” so that on
the next search, it wont send the email again. However, the thing is that if adding rows to the spreadsheet through filling or editing Forms in Appsheet is NOT recognized as an Edit or Change in the Spreadsheets Google Script, than you have to make these TimeDriven Functions and that’s really bad for two main reasons:
Any idea on this subject? Thank you, Google Apps Script: Running Specific Function When Specific Sheet is Edited on Google Spreadsheet This is a sample Google Apps Script for running the specific function when the specific sheet is edited. Sample scriptPlease copy and paste the following script to the container-bound script of Spreadsheet and set // When the cells are edited, this function is run by the fire of event trigger. function onEdit(e) { // Please set the sheet name and function as follows. const sheets = { Sheet1: functionForSheet1, // Sheet1 is the sheet name. functionForSheet1 is the function name of function which is run when Sheet1 is edited. Sheet2: functionForSheet2, }; const sheetName = e.range.getSheet().getSheetName(); if (sheets[sheetName]) { sheets[sheetName](e); } } // In this sample, when Sheet1 is edited, this function is run. function functionForSheet1(e) { console.log("Sheet1 was edited."); // do something } // In this sample, when Sheet2 is edited, this function is run. function functionForSheet2(e) { console.log("Sheet2 was edited."); // do something }
Note
References
Testing
|