Google Scripts: onEdit of non active sheet? The Next CEO of Stack OverflowWhy don't self-closing script tags work?Where should I put <script> tags in HTML markup?Why does Google prepend while(1); to their JSON responses?Copy submitted Form Responses to a New Sheet (PROJECTS) and wanting to be able to editGoogle Scripts for Sheets - onEdit and “source”How to prevent updates in TRANSPOSE range from messing up header order on other sheet?Google Sheets execute script onEditCustom Email based on Cell values in google sheetsGoogle Sheets: How to Move Data Between Sheets based on Text and DateTrying to convert Google Sheets moveTo script to copyTo script

Why did CATV standarize in 75 ohms and everyone else in 50?

What flight has the highest ratio of time difference to flight time?

Easy to read palindrome checker

Reference request: Grassmannian and Plucker coordinates in type B, C, D

Why do airplanes bank sharply to the right after air-to-air refueling?

Powershell. How to parse gci Name?

Why is information "lost" when it got into a black hole?

How to check if all elements of 1 list are in the *same quantity* and in any order, in the list2?

Flying from Cape Town to England and return to another province

Is it okay to majorly distort historical facts while writing a fiction story?

Axiom Schema vs Axiom

What steps are necessary to read a Modern SSD in Medieval Europe?

Is it my responsibility to learn a new technology in my own time my employer wants to implement?

Help understanding this unsettling image of Titan, Epimetheus, and Saturn's rings?

Solving system of ODEs with extra parameter

Why didn't Khan get resurrected in the Genesis Explosion?

Can you be charged for obstruction for refusing to answer questions?

What did we know about the Kessel run before the prequels?

WOW air has ceased operation, can I get my tickets refunded?

RigExpert AA-35 - Interpreting The Information

Which one is the true statement?

Is micro rebar a better way to reinforce concrete than rebar?

A Man With a Stainless Steel Endoskeleton (like The Terminator) Fighting Cloaked Aliens Only He Can See

Would a completely good Muggle be able to use a wand?



Google Scripts: onEdit of non active sheet?



The Next CEO of Stack OverflowWhy don't self-closing script tags work?Where should I put <script> tags in HTML markup?Why does Google prepend while(1); to their JSON responses?Copy submitted Form Responses to a New Sheet (PROJECTS) and wanting to be able to editGoogle Scripts for Sheets - onEdit and “source”How to prevent updates in TRANSPOSE range from messing up header order on other sheet?Google Sheets execute script onEditCustom Email based on Cell values in google sheetsGoogle Sheets: How to Move Data Between Sheets based on Text and DateTrying to convert Google Sheets moveTo script to copyTo script










0















On sheet1 there is a submit button which runs a script and moves data into sheet2.



I'm 'timestamping' the move (under certain conditions to prevent overwriting, and pointless timestamps), however with the current script—



Issue (1): onEdit only takes place if I manually make an edit on sheet2 (=sheet2 is active).



RESOLVED! (See comments) Issue (2): onEdit won't restrict to sheet2, and will happen as well on sheet1.



function onEdit() 
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
if( sheet.getName() == "sheet2" )
var activecell = sheet.getActiveCell();
if( activecell.getColumn() == 2 )
var pastecell = activecell.offset(0, -1);
if( pastecell.getValue() === '' & activecell.getValue() != '' )
pastecell.setValue(new Date()).setNumberFormat('YY-MM-DD HH:mm:ss');





Anyone know how two fix this?



Your help and insight is much appreciated!










share|improve this question
























  • ISSUE (2) RESOLVED! By simply changing— var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2'); to: var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet

    – saadya
    Mar 21 at 18:45












  • It is absolutely intentional that edit triggers do not activate for programmatic edits. If you're editing programmatically, you can just call the desired function from your program already.

    – tehhowch
    Mar 21 at 18:50











  • @tehhowch Yup! Just realized that🤦‍♀️ Going to timestamp straight in the move function. Thanks.

    – saadya
    Mar 21 at 18:57















0















On sheet1 there is a submit button which runs a script and moves data into sheet2.



I'm 'timestamping' the move (under certain conditions to prevent overwriting, and pointless timestamps), however with the current script—



Issue (1): onEdit only takes place if I manually make an edit on sheet2 (=sheet2 is active).



RESOLVED! (See comments) Issue (2): onEdit won't restrict to sheet2, and will happen as well on sheet1.



function onEdit() 
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
if( sheet.getName() == "sheet2" )
var activecell = sheet.getActiveCell();
if( activecell.getColumn() == 2 )
var pastecell = activecell.offset(0, -1);
if( pastecell.getValue() === '' & activecell.getValue() != '' )
pastecell.setValue(new Date()).setNumberFormat('YY-MM-DD HH:mm:ss');





Anyone know how two fix this?



Your help and insight is much appreciated!










share|improve this question
























  • ISSUE (2) RESOLVED! By simply changing— var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2'); to: var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet

    – saadya
    Mar 21 at 18:45












  • It is absolutely intentional that edit triggers do not activate for programmatic edits. If you're editing programmatically, you can just call the desired function from your program already.

    – tehhowch
    Mar 21 at 18:50











  • @tehhowch Yup! Just realized that🤦‍♀️ Going to timestamp straight in the move function. Thanks.

    – saadya
    Mar 21 at 18:57













0












0








0








On sheet1 there is a submit button which runs a script and moves data into sheet2.



I'm 'timestamping' the move (under certain conditions to prevent overwriting, and pointless timestamps), however with the current script—



Issue (1): onEdit only takes place if I manually make an edit on sheet2 (=sheet2 is active).



RESOLVED! (See comments) Issue (2): onEdit won't restrict to sheet2, and will happen as well on sheet1.



function onEdit() 
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
if( sheet.getName() == "sheet2" )
var activecell = sheet.getActiveCell();
if( activecell.getColumn() == 2 )
var pastecell = activecell.offset(0, -1);
if( pastecell.getValue() === '' & activecell.getValue() != '' )
pastecell.setValue(new Date()).setNumberFormat('YY-MM-DD HH:mm:ss');





Anyone know how two fix this?



Your help and insight is much appreciated!










share|improve this question
















On sheet1 there is a submit button which runs a script and moves data into sheet2.



I'm 'timestamping' the move (under certain conditions to prevent overwriting, and pointless timestamps), however with the current script—



Issue (1): onEdit only takes place if I manually make an edit on sheet2 (=sheet2 is active).



RESOLVED! (See comments) Issue (2): onEdit won't restrict to sheet2, and will happen as well on sheet1.



function onEdit() 
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
if( sheet.getName() == "sheet2" )
var activecell = sheet.getActiveCell();
if( activecell.getColumn() == 2 )
var pastecell = activecell.offset(0, -1);
if( pastecell.getValue() === '' & activecell.getValue() != '' )
pastecell.setValue(new Date()).setNumberFormat('YY-MM-DD HH:mm:ss');





Anyone know how two fix this?



Your help and insight is much appreciated!







javascript google-apps-script google-sheets






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 21 at 19:05







saadya

















asked Mar 21 at 18:05









saadyasaadya

85




85












  • ISSUE (2) RESOLVED! By simply changing— var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2'); to: var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet

    – saadya
    Mar 21 at 18:45












  • It is absolutely intentional that edit triggers do not activate for programmatic edits. If you're editing programmatically, you can just call the desired function from your program already.

    – tehhowch
    Mar 21 at 18:50











  • @tehhowch Yup! Just realized that🤦‍♀️ Going to timestamp straight in the move function. Thanks.

    – saadya
    Mar 21 at 18:57

















  • ISSUE (2) RESOLVED! By simply changing— var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2'); to: var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet

    – saadya
    Mar 21 at 18:45












  • It is absolutely intentional that edit triggers do not activate for programmatic edits. If you're editing programmatically, you can just call the desired function from your program already.

    – tehhowch
    Mar 21 at 18:50











  • @tehhowch Yup! Just realized that🤦‍♀️ Going to timestamp straight in the move function. Thanks.

    – saadya
    Mar 21 at 18:57
















ISSUE (2) RESOLVED! By simply changing— var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2'); to: var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet

– saadya
Mar 21 at 18:45






ISSUE (2) RESOLVED! By simply changing— var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2'); to: var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet

– saadya
Mar 21 at 18:45














It is absolutely intentional that edit triggers do not activate for programmatic edits. If you're editing programmatically, you can just call the desired function from your program already.

– tehhowch
Mar 21 at 18:50





It is absolutely intentional that edit triggers do not activate for programmatic edits. If you're editing programmatically, you can just call the desired function from your program already.

– tehhowch
Mar 21 at 18:50













@tehhowch Yup! Just realized that🤦‍♀️ Going to timestamp straight in the move function. Thanks.

– saadya
Mar 21 at 18:57





@tehhowch Yup! Just realized that🤦‍♀️ Going to timestamp straight in the move function. Thanks.

– saadya
Mar 21 at 18:57












1 Answer
1






active

oldest

votes


















0














So after reading up🤦‍♀️ and @tehhowch insight of the following—



https://developers.google.com/apps-script/guides/triggers/




Script executions and API requests do not cause triggers to run. For
example, calling Range.setValue() to edit a cell does not cause the
spreadsheet's onEdit trigger to run.




Resolved by simply running the timestamp in the original move function, like so—



function move() 

var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
var source_range = source.getRange(3, 15, 1, 6).getValues();

var target = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
var target_range = target.getRange(target.getLastRow() + 1, 2, 1, 6);

target_range.setValues(source_range);

var datecell = target_range.offset(0, -1, 1, 1);

datecell.setValue(new Date()).setNumberFormat('YY-MM-DD HH:mm:ss');

var clearsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
clearsheet.getRange("J3:K4").clearContent();
clearsheet.getRange("B8:B25").clearContent();
clearsheet.getRange("H8:H9").clearContent();
clearsheet.getRange("H11").clearContent();
clearsheet.getRange("O7:P16").clearContent();




Sometimes you got to just think out loud. Hope this helps someone else.






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55286670%2fgoogle-scripts-onedit-of-non-active-sheet%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    So after reading up🤦‍♀️ and @tehhowch insight of the following—



    https://developers.google.com/apps-script/guides/triggers/




    Script executions and API requests do not cause triggers to run. For
    example, calling Range.setValue() to edit a cell does not cause the
    spreadsheet's onEdit trigger to run.




    Resolved by simply running the timestamp in the original move function, like so—



    function move() 

    var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
    var source_range = source.getRange(3, 15, 1, 6).getValues();

    var target = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
    var target_range = target.getRange(target.getLastRow() + 1, 2, 1, 6);

    target_range.setValues(source_range);

    var datecell = target_range.offset(0, -1, 1, 1);

    datecell.setValue(new Date()).setNumberFormat('YY-MM-DD HH:mm:ss');

    var clearsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
    clearsheet.getRange("J3:K4").clearContent();
    clearsheet.getRange("B8:B25").clearContent();
    clearsheet.getRange("H8:H9").clearContent();
    clearsheet.getRange("H11").clearContent();
    clearsheet.getRange("O7:P16").clearContent();




    Sometimes you got to just think out loud. Hope this helps someone else.






    share|improve this answer



























      0














      So after reading up🤦‍♀️ and @tehhowch insight of the following—



      https://developers.google.com/apps-script/guides/triggers/




      Script executions and API requests do not cause triggers to run. For
      example, calling Range.setValue() to edit a cell does not cause the
      spreadsheet's onEdit trigger to run.




      Resolved by simply running the timestamp in the original move function, like so—



      function move() 

      var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
      var source_range = source.getRange(3, 15, 1, 6).getValues();

      var target = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
      var target_range = target.getRange(target.getLastRow() + 1, 2, 1, 6);

      target_range.setValues(source_range);

      var datecell = target_range.offset(0, -1, 1, 1);

      datecell.setValue(new Date()).setNumberFormat('YY-MM-DD HH:mm:ss');

      var clearsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
      clearsheet.getRange("J3:K4").clearContent();
      clearsheet.getRange("B8:B25").clearContent();
      clearsheet.getRange("H8:H9").clearContent();
      clearsheet.getRange("H11").clearContent();
      clearsheet.getRange("O7:P16").clearContent();




      Sometimes you got to just think out loud. Hope this helps someone else.






      share|improve this answer

























        0












        0








        0







        So after reading up🤦‍♀️ and @tehhowch insight of the following—



        https://developers.google.com/apps-script/guides/triggers/




        Script executions and API requests do not cause triggers to run. For
        example, calling Range.setValue() to edit a cell does not cause the
        spreadsheet's onEdit trigger to run.




        Resolved by simply running the timestamp in the original move function, like so—



        function move() 

        var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
        var source_range = source.getRange(3, 15, 1, 6).getValues();

        var target = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
        var target_range = target.getRange(target.getLastRow() + 1, 2, 1, 6);

        target_range.setValues(source_range);

        var datecell = target_range.offset(0, -1, 1, 1);

        datecell.setValue(new Date()).setNumberFormat('YY-MM-DD HH:mm:ss');

        var clearsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
        clearsheet.getRange("J3:K4").clearContent();
        clearsheet.getRange("B8:B25").clearContent();
        clearsheet.getRange("H8:H9").clearContent();
        clearsheet.getRange("H11").clearContent();
        clearsheet.getRange("O7:P16").clearContent();




        Sometimes you got to just think out loud. Hope this helps someone else.






        share|improve this answer













        So after reading up🤦‍♀️ and @tehhowch insight of the following—



        https://developers.google.com/apps-script/guides/triggers/




        Script executions and API requests do not cause triggers to run. For
        example, calling Range.setValue() to edit a cell does not cause the
        spreadsheet's onEdit trigger to run.




        Resolved by simply running the timestamp in the original move function, like so—



        function move() 

        var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
        var source_range = source.getRange(3, 15, 1, 6).getValues();

        var target = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
        var target_range = target.getRange(target.getLastRow() + 1, 2, 1, 6);

        target_range.setValues(source_range);

        var datecell = target_range.offset(0, -1, 1, 1);

        datecell.setValue(new Date()).setNumberFormat('YY-MM-DD HH:mm:ss');

        var clearsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
        clearsheet.getRange("J3:K4").clearContent();
        clearsheet.getRange("B8:B25").clearContent();
        clearsheet.getRange("H8:H9").clearContent();
        clearsheet.getRange("H11").clearContent();
        clearsheet.getRange("O7:P16").clearContent();




        Sometimes you got to just think out loud. Hope this helps someone else.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Mar 21 at 19:10









        saadyasaadya

        85




        85





























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55286670%2fgoogle-scripts-onedit-of-non-active-sheet%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

            Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

            Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript