title: How to fire an onOpen event in Google Spreadsheet when a spreadsheet was 'Make a Copy'?
body: <p>I know some basic javascript/app-script and i have my following code</p>
  
  <pre><code>function onTimesheetOpen() {  
    var source = {
      ssId : '1Mqbh09mj_UoRZiQkzw1gOVpHFiYk-8qZvpnDbzCYOFY',
      shName : 'prompt',
      a1Notation : "A1:A100",
    };
  
    var target = {
         ssId : SpreadsheetApp.getActiveSpreadsheet().getId(),
      shName : 'Setups',
      a1Notation : "A1:A100",
    };
  
    AsExt.UTLCopyCell(source, target);
  }
  </code></pre>
  
  <p>It's a READONLY timesheet template shared to a group of workers, where it was intended to copy list of employees from employee sheet (source) and populate into my target (the template sheet). The onTimesheetOpen() trigger because i set a trigger "From Spreadsheet", "On Open" event.
  Everytime the template opened, it will copy updated employees from master employee sheet.</p>
  
  <p>The workflow for the workers are to 'make a copy' from the template timesheet file to their drive (My Drive) and i noticed the trigger will be deleted everytime i made a copy. It's quite different from traditional programming language and i do hope to get some helps from the gurus :)
  I couldn't expect every worker to open script editor after 'made a copy' as they are not IT trained, their jobs is to get the timesheet, which pull for a list of latest employees (master file).</p>
  
  <p>I also tried the installable trigger
  <a href="https://developers.google.com/apps-script/guides/triggers/installable" rel="nofollow noreferrer">https://developers.google.com/apps-script/guides/triggers/installable</a>
  which is also not that suitable. </p>
  
  <p>In order to create a trigger into their copied file, they have to run following code ONCE (which are confusing as they not IT trained)</p>
  
  <pre><code>function createSpreadsheetOpenTrigger() {
    var ss = SpreadsheetApp.getActive();
    ScriptApp.newTrigger('onTimesheetOpen')
        .forSpreadsheet(ss)
        .onOpen()
        .create();
  }
  </code></pre>
  
  <p>What's the best way to share a readonly template to workers and it will directly grab latest employee list from master employee sheet without let them touching the code?</p>
  
  <p>Thanks in million!</p>