title: Interactive change from Google Doc to Google Spreadsheet tick box
body: <p>I had another post with my project (container bound script) but this time I've tried to do the other way when I modify a Google Doc table section (when I tick in column J) it will modify the line in the Google Sheet because each line corresponds to a Google Doc project. It's the column J;  I set a trigger to view the Google Doc in the same window and I can modify inside the thing is that when I close the Google Doc it's not modifying instantly the line of the Google Sheet.If I tick another time ;  this is the one moment it modifies the line so the problem is that it has a delay of a tick. To see it :  </p>
  
  <p>1) log google make copy Tools -> Script editor set trigget view_doc_and_edit -> from spreadsheet on edit >>> </p>
  
  <p>2) now if you click for a doc in the colum J you can see the google doc corresponding and we can modify it</p>
  
  <p>3) we close we look in the table nothing changed and if we click another time the same place(row) it will change the row. </p>
  
  <p>I know that for the Google Doc onEdit doesn't exist and I've tried to do by this way any idea is welcomed to modify in the same time to have an interactive tool </p>
  
  <p>This is my project<br>
  <a href="https://docs.google.com/spreadsheets/d/1k_kj98U__0Bk44gh0qRFpaVx0ru3sN1pSPGiMQwimxo/edit?usp=sharing" rel="nofollow noreferrer">https://docs.google.com/spreadsheets/d/1k_kj98U__0Bk44gh0qRFpaVx0ru3sN1pSPGiMQwimxo/edit?usp=sharing</a></p>
  
  <pre class="lang-js prettyprint-override"><code>var TITLE = 'Show Google Doc';
  var SPREADSHEET_ID = "1k_kj98U__0Bk44gh0qRFpaVx0ru3sN1pSPGiMQwimxo"; // = assign your spreadsheet id to this variable
  
  
  var column_name_project ;
  var column_code_project ;
  var column_chef_project;
  var column_service ;
  var column_other_services ;
  var column_type_of_project ;
  var column_perimeter ; 
  var column_date_project ;
  
  var COLUMN_URL ;
  
  
  
  /** will return the number of the column correspondant **/
  function find_columns_in_projet(){
    var tss = SpreadsheetApp.openById(SPREADSHEET_ID);
    var sheet = tss.getSheets()[0];
    var lastColumn = sheet.getLastColumn();
    var data = sheet.getRange(1,1,1,lastColumn).getValues()[0]; 
  
    for(var n=0;n&lt;data.length;n++){ 
  
      if(data[n].toString().indexOf('Name project') &gt; -1)
        column_name_project = n+1;
  
  
      else  if(data[n].toString().indexOf('Code') &gt; -1)
        column_code_project = n + 1;
  
      else if(data[n].toString().indexOf('Chef') &gt; -1)
        column_chef_project= n + 1;
  
      else  if(data[n].toString().indexOf('Service') &gt; -1)
        column_service = n +1 ;
  
      else if(data[n].toString().indexOf('Other services') &gt; -1)
        column_other_services = n + 1;
  
      else if(data[n].toString().indexOf('Type of the project') &gt; -1)
        column_type_of_project = n + 1;
  
      else if(data[n].toString().indexOf('Perimeter') &gt; -1)
        column_perimeter = n + 1;
  
      else if(data[n].toString().indexOf('Date') &gt; -1)
        column_date_project = n + 1;
  
      else if(data[n].toString().indexOf('URL') &gt; -1)
        COLUMN_URL = n +1  ;
    }
  }
  
  /**  pour visualiser le document sur la meme page **/
  function view_doc_and_edit(event) {
  
    find_columns_in_projet();
    Logger.log("!! La colonne URL est: !!" + COLUMN_URL );
    if( ( event.range.getSheet().getName() === "Sheet1" ) &amp;&amp;   ( event.range.getColumnIndex() == COLUMN_URL +1 ) ) {
      if( event.value === "TRUE" ) {
        try {
          var URL = event.range.offset(0,-1,1,1).getValue();
          Logger.log('The URL is : ' + URL );
          var google_doc = DocumentApp.openByUrl(URL) ;
          var body = google_doc.getBody();
          Logger.log('The body is ' + body );
  
  
          // Add this line
          var ui = HtmlService.createTemplateFromFile('ModeLessDialog');
          ui.body = URL; // Pass url to template
          ui = ui.evaluate().setWidth(1000).setHeight(500);
          SpreadsheetApp.getUi().showModalDialog(ui, TITLE);
          var insertion_position = event.range.getRow()  ;
          var tss_bis = SpreadsheetApp.openById(SPREADSHEET_ID);
          var sheet_bis = tss_bis.getSheets()[0];
          var numRows_bis = sheet_bis.getLastRow();
          var lastColumn_bis = sheet_bis.getLastColumn();
  
          //from the second line car the first line we have the headers
          var data_sheet = sheet_bis.getRange(1,1,numRows_bis,lastColumn_bis).getDisplayValues();
          if(body)
          {
            var ok = 0;                                    //pour l'instant il n'y a pas de tableau trouvé (avec 8 lignes) qui nous interesse pour mettre à jour dans la feuille de calcul
            var numChildren=body.getNumChildren();
            var compteur=0;
            //tant qu'on n'a pas du tableau on va parcourir (car on n'est pas sur d'avoir le 4 comme enfant (Numero_Enfant_Tableau_Template) car l'utilisateur pourra modifier/insérer un prargraphe une image etc.
            while(ok ==0 &amp;&amp; compteur&lt;numChildren)
            {
              var child=body.getChild(compteur);
              /** ============On est concerné par le premier tableau seulement qui a au plus 8 lignes d'information ================**/
              Logger.log('Le type dans la boucle  ' + child.getType());
  
              //on a trouvé un tableau qui nous interesse et qui a au plus 8 lignes d'information **/
              if(child.getType()==DocumentApp.ElementType.TABLE &amp;&amp; child.asTable().getNumRows() &gt;= 8)
              {
                //on a trouve notre premier tableau la variable ok = 1
                ok=1;   
  
                /**  Le nombre de lignes dans le premier tableau avec au plus 8 lignes qui nous interessent **/
                var numrows = child.asTable().getNumRows();
                Logger.log('Le nombre de lignes dans notre Google Doc  ' + numrows);
  
                /** on va parcourir notre tableau pour récuperer les champs qui nous interessent  **/ 
  
                var k = 1;     //on sait que c'est l'information à droite qui nous interessent on va éviter une boucle inutile
                var celltxt,trange;
  
  
                /** On va mettre la valeur du celltxt dans le spreadsheet et on va ajuster automatiquement la colonne avec la méthode autoResizeColumn **/
                celltxt=child.asTable().getCell(0, k).editAsText().getText();
                Logger.log('La valeur (à droite) dans le tableau  ' + celltxt);
                trange = sheet_bis.getRange(insertion_position, column_name_project); //l'emplacement correspondant
                trange.setValue(celltxt);
  
                celltxt=child.asTable().getCell(1, k).editAsText().getText();
                Logger.log('La valeur (à droite) dans le tableau  ' + celltxt);
                trange = sheet_bis.getRange(insertion_position, column_code_project); //l'emplacement correspondant
                trange.setValue(celltxt);
  
                celltxt=child.asTable().getCell(2, k).editAsText().getText();
                Logger.log('La valeur (à droite) dans le tableau  ' + celltxt);
                trange = sheet_bis.getRange(insertion_position, column_chef_project); //l'emplacement correspondant
                trange.setValue(celltxt);
  
                celltxt=child.asTable().getCell(3, k).editAsText().getText();
                Logger.log('La valeur (à droite) dans le tableau  ' + celltxt);
                trange = sheet_bis.getRange(insertion_position, column_service); //l'emplacement correspondant
                trange.setValue(celltxt);
  
                celltxt=child.asTable().getCell(4, k).editAsText().getText();
                Logger.log('La valeur (à droite) dans le tableau  ' + celltxt);
                trange = sheet_bis.getRange(insertion_position, column_other_services); //l'emplacement correspondant
                trange.setValue(celltxt);
  
                celltxt=child.asTable().getCell(5, k).editAsText().getText();
                Logger.log('La valeur (à droite) dans le tableau  ' + celltxt);
                trange = sheet_bis.getRange(insertion_position, column_type_of_project); //l'emplacement correspondant
                trange.setValue(celltxt);
  
                celltxt=child.asTable().getCell(6, k).editAsText().getText();
                Logger.log('La valeur (à droite) dans le tableau  ' + celltxt);
                trange = sheet_bis.getRange(insertion_position, column_perimeter); //l'emplacement correspondant
                trange.setValue(celltxt);
  
                celltxt=child.asTable().getCell(7, k).editAsText().getText();
                Logger.log('La valeur (à droite) dans le tableau  ' + celltxt);
                trange = sheet_bis.getRange(insertion_position, column_date_project); //l'emplacement correspondant
                trange.setValue(celltxt);
              }
              compteur++;       /** on va incrementer le compteur jusqu'à on trouve le tableau qui nous interessent **/
            }
          }
          event.range.setValue("FALSE");
        }
        catch(err) {
          Logger.log(err);
        }
      }
    }
    google_doc.saveAndClose();
  }
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/XEjgS.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/XEjgS.png" alt=""></a><br>
  <a href="https://i.stack.imgur.com/sFbly.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/sFbly.png" alt=""></a>  </p>