Retornando valores de linha com base em variáveis específicas em várias planilhas

0

Não sei bem como explicar isso corretamente, mas aqui vamos nós ...

Estou tentando criar um único documento de orçamento que me permita gerenciar compras e reconciliação para vários projetos. Eu gostaria de criar folhas separadas por projeto e ter itens comprados em uma folha mestre.

Usando a formatação condicional, defini uma das colunas para exibir o status de um item (aguardando aprovação, aprovado, pedido, recebido). Eu gostaria que o conteúdo de uma linha inteira fosse preenchido em uma nova tabela de planilhas assim que o status fosse definido como "Recebido". A folha deve atualizar descendente.

Qualquer ajuda é muito apreciada.

    
por Mike Bodes 29.05.2014 / 03:05

1 resposta

0

Depois de analisar sua pergunta um pouco mais de perto, determinei que você precisaria escrever um script do Google para fazer isso.

Tudo o que você precisa fazer é: abrir o editor de scripts do Google, criar um novo projeto, colar isso na parte inferior do script, renomear a "Reconciliação" para qualquer nome da planilha e salvá-lo . O onEdit() é um gatilho incorporado em scripts do Google que faz o trabalho de atualização após uma edição, e o checkReceived() é um exemplo de rolagem manual que faz o trabalho que você procura. Eu adaptei este "exemplo" à sua imagem fornecida. Você verá que pode adicionar quantos projetos desejar e isso os cobrirá da mesma forma. Você pode alterar os detalhes para combinar com o que mais precisar (ou seja, você também deve notar que chamei a planilha mestre de "Mestre"), mas isso deve funcionar para você. Por favor, deixe-me saber como é isso.

function checkReceived() {


  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  //The following to ensures you don't run this on another spreadsheet
  if(spreadsheet.getName()=="Reconciliation") //<--This is the name of the spreadsheet I used, change it for yours.
  {  

    var maxIntervalSS = spreadsheet.getNumSheets();
    var theMasterSheet = spreadsheet.getSheetByName("Master");
    var masterSheetID = theMasterSheet.getIndex();
    var sheets = spreadsheet.getSheets();
    var thisRow = theMasterSheet.getRange(1,1); //Arbitrary for initialization

    //Need to Clear existing master data.
    theMasterSheet.getDataRange().clear();

    //Will use a flag to repopulate header.
    var firsttime= true;

    //Iterates through each spreadsheet
    for(var checkingSheetIterator = 0; checkingSheetIterator<maxIntervalSS; checkingSheetIterator++)
    {

      var currentSheet = sheets[checkingSheetIterator];

      //Ignores the iteration if ID equals the master sheet
      if(currentSheet.getIndex()!=masterSheetID)
      {




        //Getting currentSheet's data
        var currentRange = currentSheet.getDataRange();

        //Iterates through the currentSheet's data
        for(var rows = 1; rows<=currentSheet.getLastRow(); rows++)
        {
          //Repopulating header on first time.              
          //"8" for column H, containing the Status
          if(currentRange.getCell(rows,8).getValue()=="Received"|| firsttime)  //<-Note this is your keyword and specified location; "8".
          {  //Add to bottom of sheet
            theMasterSheet.appendRow([currentRange.getCell(rows,1).getValue(),currentRange.getCell(rows,2).getValue(),
                                      currentRange.getCell(rows,3).getValue(),currentRange.getCell(rows,4).getValue(),
                                      currentRange.getCell(rows,5).getValue(),currentRange.getCell(rows,6).getValue(),
                                      currentRange.getCell(rows,7).getValue(),currentRange.getCell(rows,8).getValue(),
                                      currentRange.getCell(rows,9).getValue(),currentRange.getCell(rows,10).getValue(),
                                      currentRange.getCell(rows,11).getValue()]);
            firsttime=false;
          }
        }
      }
    }
  }
};  

function onEdit(){

  checkReceived();

};

O seguinte é um exemplo da configuração da planilha. Observe que o nome da planilha é Reconciliação (parte superior da imagem) e as guias (ou seja, folhas) na parte inferior da página são denominadas "Mestre", "Projeto1" e "Projeto2". Por favor, note que eu não me incomodei com a formatação condicional, pois não deve ter qualquer influência sobre o resultado.

    
por 30.05.2014 / 06:33