Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

138
Visualizações
Import markers in new column in Google Sheets with Apps Script

I have this getMarkers() function that finds {{markers}} from a Google Doc and put them in columns in my Google Sheet. It works well, but if I add a new marker in Doc it's not imported in a new column and the content stay in a wrong way. The content is wrote by the user after using the function. This is the scheme:

{{marker 1}}   {{marker 2}}    {{marker 3}}
 content 1      content 2       content 3

and then when I add a new marker (between 1 and 2 for example):

{{marker 1}}  {{new marker}}  {{marker 2}}  {{marker 3}}
 content 1      content 2      content 3   

I want the content to fit his marker.

function getMarkers(){

  var ss = SpreadsheetApp.getActive();
  var sh = SpreadsheetApp.getActiveSheet();
  //var ws = ss.getSheetByName('DS') || ss.insertSheet('DS', 1);

  var docID = "XXXXXXXXXXXXXXXXXXXXXXXX";
  var docFile = DriveApp.getFileById(docID);
  docFile.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);

  var identifier = {
    start: `{{`,
    start_include: true,
    end: `}}`,
    end_include: true
  };

  var docMarkers = getDocItems(docID, identifier);

  var rw1 = [docMarkers];
  var rw2 = rw1[0].map((col, i) => rw1.map(row => row[i]));
  var markerList = rw2[0].map((col, i) => rw2.map(row => row[i]));

  sh.getRange(1,1,1,rw2.length).setValues(markerList);

}

.

function getDocItems(docID, identifier){

  var body = DocumentApp.openById(docID).getBody();
  var docText = body.getText();
  
  // Check if search characters are to be included.
  var startLen =  identifier.start_include ? 0 : identifier.start.length;
  var endLen = identifier.end_include ? 0 : identifier.end.length;
  
  // Set up the reference loop
  var textStart = 0;
  var doc = docText;
  var docList = [];
  
  // Loop through text grab the identifier items. Start loop from last set of end identfiers.
  while(textStart > -1){
    var textStart = doc.indexOf(identifier.start);
    
    if(textStart === -1){
      break;  
    } else{
      
      var textEnd = doc.indexOf(identifier.end) + identifier.end.length;
      var word = doc.substring(textStart,textEnd);
      
      doc = doc.substring(textEnd);
      
      docList.push(word.substring(startLen,word.length - endLen));
    };
  };

  //return a unique set of identifiers.
  return [...new Set(docList)];

}
about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda