Quantcast
Channel: Hot Weekly Questions - Web Applications Stack Exchange
Viewing all articles
Browse latest Browse all 9782

How can I Speed up an onEdit script so that it captures all subsequent edits?

$
0
0

I have a bit of script to capture changes made to a table of information, pulling the new value as well as the person's ID, a category, and the reference of the item being changed. Altogether the script collects 4 snippets of data, plus a timestamp. Once collected, this array is appended to the bottom of a table on another sheet to act as a change log. Once done, the changed cell is formatted yellow to show it's been changed.It works, but if you change another cell too quickly afterwards, the script trips over and one or more subsequent changes are not captured.How can I "bank" the changes, and write them to the second sheet once all the changes are made? (eg by clicking a "save" button)I am self taught so have big holes in my knowledge, so any helpful suggestions (with examples) gratefully received.Thank you

code:

function onEdit(e){const ss = SpreadsheetApp.getActiveSpreadsheet();const ViewId = ss.getSheetByName('VIEW').getSheetId(); // Sheet ID of the only sheet this script applies toconst ThisSheetId = ss.getActiveSheet().getSheetId(); // Sheet ID of whichever sheet is activeconst SignedOff = ss.getSheetByName('SignedOff'); // Sheet on which the collected data is to be appendedif(ViewId == ThisSheetId){// Exit if we're on the wrong page  var ThisRow = e.range.getRow();  var ThisCol = e.range.getColumn();  if (ThisRow >= 4 && ThisCol >= 3){// Exit if we're out of range so only changes within the table are registered    var NewValue = e.range.getValue();    var IndividualID = VIEW.getRange(ThisRow,1,1,1).getValue(); // get value from column A of the edited line    var ItemName = VIEW.getRange(2,ThisCol,1,1).getValue(); // get header value from the edited column    var Category = VIEW.getRange('J1').getValue(); // get value showing which category the item is from    var Timestamp = new(Date);    SignedOff.appendRow([IndividualID,Category,ItemName,NewValue,Timestamp]); // add the collected data to the list on the SignedOff sheet    e.range.setBackground('#ffff00'); // turn the edited cell yellow to show it's been changed} return}return}

Viewing all articles
Browse latest Browse all 9782

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>