{"id":706,"date":"2020-08-27T23:53:42","date_gmt":"2020-08-28T02:53:42","guid":{"rendered":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/?page_id=706"},"modified":"2020-08-28T00:09:21","modified_gmt":"2020-08-28T03:09:21","slug":"script-do-google-apps-com-o-planilhas-google","status":"publish","type":"page","link":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/modulo-avancado\/aula-3-scripts-google\/script-do-google-apps-com-o-planilhas-google\/","title":{"rendered":"Script do Google Apps com o Planilhas Google"},"content":{"rendered":"<h3 class=\"step-title\">Apresentando o servi\u00e7o de planilha<\/h3>\n<p>Quatro classes englobam a funda\u00e7\u00e3o do servi\u00e7o de planilha:\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet-app\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SpreadsheetApp<\/code><\/a>,\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code><\/a>,\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Sheet<\/code><\/a>, e\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Range<\/code><\/a>.\u00a0Esta se\u00e7\u00e3o descreve essas classes e para que s\u00e3o usadas.<\/p>\n<p>&nbsp;<\/p>\n<h4>A classe SpreadsheetApp<\/h4>\n<p>Antes de aprofundar em planilhas, folhas, e\u00a0<a class=\"autolink\" title=\"Intervalos\" href=\"https:\/\/ava.ufpel.edu.br\/pre\/mod\/page\/view.php?id=174916\">intervalos<\/a>, voc\u00ea deve olhar para o seu sua classe pai:\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet-app\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SpreadsheetApp<\/code><\/a>.\u00a0Muitos scripts come\u00e7am chamando\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet-app\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SpreadsheetApp<\/code><\/a>\u00a0m\u00e9todos, pois eles podem fornecer o ponto inicial de acesso aos arquivos do Planilhas Google.\u00a0Voc\u00ea pode considerar\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet-app\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SpreadsheetApp<\/code><\/a>\u00a0a classe principal do\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/\" target=\"_blank\" rel=\"noopener noreferrer\">servi\u00e7o de planilha<\/a>\u00a0.\u00a0A\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet-app\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SpreadsheetApp<\/code><\/a>\u00a0classe n\u00e3o \u00e9 explorada em profundidade aqui.\u00a0No entanto, posteriormente neste laborat\u00f3rio, voc\u00ea encontrar\u00e1 exemplos e exerc\u00edcios para ajud\u00e1-lo a entender esta aula.<\/p>\n<p>&nbsp;<\/p>\n<h4>Planilhas, planilhas e suas classes<\/h4>\n<p>Como um termo do Planilhas, uma\u00a0planilha\u00a0\u00e9 um arquivo do Planilhas Google (armazenado no Google Drive) que cont\u00e9m dados organizados por linhas e colunas.\u00a0Uma planilha \u00e0s vezes \u00e9 chamada de &#8216;Planilha Google&#8217;, da mesma forma que um documento \u00e9 chamado de &#8216;Documento Google&#8217;.<\/p>\n<p>Voc\u00ea pode usar a\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code><\/a>\u00a0classe para acessar e modificar os dados do arquivo do Planilhas Google.\u00a0Voc\u00ea tamb\u00e9m pode usar essa classe para outras opera\u00e7\u00f5es de n\u00edvel de arquivo, como adicionar colaboradores.<\/p>\n<p>&nbsp;<\/p>\n<p class=\"image-container\"><img title=\"Defini\u00e7\u00e3o de planilha\" src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-2\/img\/f00cc1a9eb606f77.png\" width=\"855\" height=\"165\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Uma\u00a0folha\u00a0representa a p\u00e1gina individual de uma planilha, \u00e0s vezes chamada de &#8220;guia&#8221; ou &#8220;pasta de trabalho&#8221;.\u00a0Cada planilha pode conter uma ou mais p\u00e1ginas.\u00a0Voc\u00ea pode usar a\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Sheet<\/code><\/a>\u00a0classe para acessar e modificar dados e configura\u00e7\u00f5es no n\u00edvel da planilha, como mover linhas ou colunas de dados.<\/p>\n<p>&nbsp;<\/p>\n<p class=\"image-container\"><img title=\"Defini\u00e7\u00e3o de planilhas\" src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-2\/img\/39dbb10f83e3082.png\" width=\"859\" height=\"117\" \/><\/p>\n<aside class=\"special\">\u00a0<img src=\"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/files\/2020\/08\/aula_2_1.png\" width=\"833\" height=\"467\" \/><\/aside>\n<p>&nbsp;<\/p>\n<p>Em resumo, a\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code><\/a>\u00a0classe opera na cole\u00e7\u00e3o de planilhas e define um arquivo do Planilhas Google no Google Drive.\u00a0A\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Sheet<\/code><\/a>\u00a0aula funciona em folhas individuais dentro de uma planilha.<\/p>\n<p>&nbsp;<\/p>\n<h4>A classe Range<\/h4>\n<p>A maioria das opera\u00e7\u00f5es de manipula\u00e7\u00e3o de dados (por exemplo, leitura, grava\u00e7\u00e3o ou\u00a0<a class=\"autolink\" title=\"Formata\u00e7\u00e3o de Dados\" href=\"https:\/\/ava.ufpel.edu.br\/pre\/mod\/page\/view.php?id=179367\">formata\u00e7\u00e3o de dados<\/a>\u00a0de c\u00e9lulas) exige que voc\u00ea defina a quais c\u00e9lulas a opera\u00e7\u00e3o se aplica.\u00a0Voc\u00ea pode usar a\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Range<\/code><\/a>\u00a0classe para selecionar conjuntos espec\u00edficos de c\u00e9lulas em uma planilha.\u00a0As inst\u00e2ncias desta classe representam um\u00a0intervalo\u00a0&#8211; um grupo de uma ou mais c\u00e9lulas adjacentes em uma folha.\u00a0Voc\u00ea pode especificar\u00a0intervalos\u00a0por seus n\u00fameros de linha e coluna ou usando a nota\u00e7\u00e3o A1.<\/p>\n<p>&nbsp;<\/p>\n<p><img src=\"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/files\/2020\/08\/aula_2_2.png\" width=\"840\" height=\"290\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>As pr\u00f3ximas se\u00e7\u00f5es mostram exemplos de scripts que funcionam com essas classes e seus m\u00e9todos.<\/p>\n<p>&nbsp;<\/p>\n<h3 class=\"step-title\">Configurando<\/h3>\n<p>Antes de continuar, voc\u00ea precisa de uma planilha com alguns dados.\u00a0Fornecemos um para voc\u00ea:\u00a0<a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1V8w7--KMsqDBM8Vbclxezf3KNlYFA0usWZIfEuGhL9Y\/copy\" target=\"_blank\" rel=\"noopener noreferrer\">clique neste link para copiar a planilha de dados<\/a>\u00a0e, em seguida, clique no bot\u00e3o\u00a0Fazer uma c\u00f3pia\u00a0.<\/p>\n<p>&nbsp;<\/p>\n<p class=\"image-container\"><img title=\"C\u00f3pia da planilha sem t\u00edtulo\" src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-2\/img\/5376f721894b10d9.png\" width=\"858\" height=\"495\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Uma c\u00f3pia da planilha de exemplo para voc\u00ea usar deve ser colocada na pasta inicial do Google Drive com o nome &#8220;C\u00f3pia da planilha sem t\u00edtulo&#8221;.\u00a0Use esta planilha para completar os exerc\u00edcios deste codelab.<\/p>\n<p>Como um lembrete, voc\u00ea pode abrir o editor de script selecionando\u00a0Ferramentas&gt; Editor de scripts\u00a0no menu do Planilhas Google:<\/p>\n<p>&nbsp;<\/p>\n<p class=\"image-container\"><img title=\"Editor de script\" src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-2\/img\/69f71eb097161ac3.png\" \/><\/p>\n<p>\u00a0 \u00a0 Ao abrir um projeto do Apps Script no editor de script pela primeira vez, o editor de script cria um projeto de script e um arquivo de script para voc\u00ea.<\/p>\n<p>No codelab anterior, voc\u00ea j\u00e1 havia criado um script de macro antes de entrar no editor de script.\u00a0Seu arquivo n\u00e3o possui macros, ent\u00e3o o editor fornece um arquivo de script chamado\u00a0<code>Code.gs<\/code>\u00a0com o pr\u00e9-gerado\u00a0<code>myFunction()<\/code><\/p>\n<p>.<\/p>\n<p class=\"image-container\"><img title=\"Code.gs e myFunction\" src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-2\/img\/e07178aacb62f327.png\" width=\"859\" height=\"275\" \/><\/p>\n<p>\u00a0 \u00a0 Tudo pronto!\u00a0Vamos ver agora como usar a\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code><\/a>\u00a0classe para melhorar esta planilha.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h3 class=\"step-title\">Acessando e modificando planilhas<\/h3>\n<p>Nesta se\u00e7\u00e3o, voc\u00ea pode aprender como usar as\u00a0classes\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet-app\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SpreadsheetApp<\/code><\/a>\u00a0e\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code><\/a>\u00a0para alterar e criar planilhas nesta p\u00e1gina.\u00a0Especificamente, os exerc\u00edcios ensinam como renomear uma planilha e duplicar planilhas dentro de uma planilha.<\/p>\n<p>Essas s\u00e3o opera\u00e7\u00f5es simples, mas muitas vezes fazem parte de um fluxo de trabalho maior e mais complexo.\u00a0Depois que voc\u00ea puder entender como automatizar essas tarefas com c\u00f3digo de script, ser\u00e1 mais f\u00e1cil aprender como automatizar opera\u00e7\u00f5es mais elaboradas.<\/p>\n<p>&nbsp;<\/p>\n<h4>Renomeando a planilha ativa<\/h4>\n<p>Suponha que voc\u00ea queira alterar o nome padr\u00e3o, &#8220;C\u00f3pia da planilha sem t\u00edtulo&#8221; para um t\u00edtulo que reflita melhor o prop\u00f3sito da planilha.\u00a0Com a\u00a0classe\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet-app\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SpreadsheetApp<\/code><\/a>\u00a0e\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code><\/a>, voc\u00ea pode fazer exatamente isso.<\/p>\n<ol start=\"1\" type=\"1\">\n<li>No editor de script, substitua o\u00a0<code>myFunction()<\/code>\u00a0bloco de c\u00f3digo\u00a0padr\u00e3o\u00a0pelo seguinte c\u00f3digo:<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<pre><code><span class=\"kwd\">function<\/span><span class=\"pln\"> renameSpreadsheet<\/span><span class=\"pun\">()<\/span> <span class=\"pun\">{<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> mySS <\/span><span class=\"pun\">=<\/span> <span class=\"typ\">SpreadsheetApp<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getActiveSpreadsheet<\/span><span class=\"pun\">();<\/span><span class=\"pln\">\r\n  mySS<\/span><span class=\"pun\">.<\/span><span class=\"pln\">rename<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"2017 Avocado Prices in Portland, Seattle\"<\/span><span class=\"pun\">);<\/span>\r\n<span class=\"pun\">}<\/span><\/code><\/pre>\n<ol start=\"2\" type=\"1\">\n<li>Select\u00a0<img src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-2\/img\/7aacb735bfe92438.png\" \/>,\u00a0File&gt; Save\u00a0, ou\u00a0Ctrl + S\u00a0(\u00a0Cmd + S\u00a0em Macs) para salvar seu script.<\/li>\n<li>Quando solicitado a nomear o projeto de script, denomine &#8220;Pre\u00e7os do abacate&#8221;.<\/li>\n<li>Execute o seu script selecionando o nome da fun\u00e7\u00e3o na lista suspensa da barra de ferramentas e clicando no\u00a0<img title=\"Corre\" src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-2\/img\/520b3b8ae24db874.png\" \/>bot\u00e3o.<\/li>\n<li>Quando solicitado a autorizar o script, siga as instru\u00e7\u00f5es na tela para fazer isso.\u00a0Se voc\u00ea receber uma mensagem &#8220;Este aplicativo n\u00e3o foi verificado&#8221;, clique em\u00a0Avan\u00e7ado e\u00a0, em seguida, clique em\u00a0Ir para Pre\u00e7os de abacate (n\u00e3o seguro)\u00a0.\u00a0Na pr\u00f3xima tela, clique em\u00a0Permitir\u00a0.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<aside class=\"warning\">\u00a0 \u00a0 Observa\u00e7\u00e3o:\u00a0se voc\u00ea estiver usando uma\u00a0conta\u00a0<a href=\"http:\/\/gmail.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">gmail.com<\/a>\u00a0, poder\u00e1 ver uma caixa de di\u00e1logo &#8220;Este aplicativo n\u00e3o foi verificado&#8221; ao usar o script pela primeira vez.\u00a0O Google usa isso para avisar os usu\u00e1rios que podem estar usando c\u00f3digo de autores desconhecidos ou n\u00e3o confi\u00e1veis.\u00a0Se voc\u00ea vir esta caixa de di\u00e1logo, n\u00e3o h\u00e1 problema em continuar, pois voc\u00ea \u00e9 o autor do script.\u00a0Siga as instru\u00e7\u00f5es na tela para continuar autorizando o script.<\/aside>\n<p>&nbsp;<\/p>\n<p>Assim que a fun\u00e7\u00e3o for executada, o nome do arquivo da sua planilha deve mudar:<\/p>\n<p>&nbsp;<\/p>\n<p class=\"image-container\"><img style=\"outline: none !important; vertical-align: middle; border: 0px;\" title=\"C\u00f3pia da planilha sem t\u00edtulo -&gt; Pre\u00e7os do abacate 2017 em Portland, Seattle\" src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-2\/img\/226c7bc3c2fbf33e.png\" width=\"851\" height=\"219\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Vamos dar uma olhada no c\u00f3digo que voc\u00ea inseriu.\u00a0O\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet-app#getactivespreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>getActiveSpreadsheet()<\/code><\/a>\u00a0m\u00e9todo retorna um objeto que representa a planilha ativa;\u00a0ou seja, a c\u00f3pia da planilha de exerc\u00edcios que voc\u00ea fez.\u00a0Este objeto de planilha \u00e9 armazenado na\u00a0<code>mySS<\/code>\u00a0vari\u00e1vel.\u00a0Chamando\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet#renamenewname\" target=\"_blank\" rel=\"noopener noreferrer\"><code>rename(newName)<\/code><\/a>\u00a0no\u00a0<code>mySS<\/code>\u00a0muda o nome do arquivo de planilha no Google Drive para &#8220;2017 abacate Pre\u00e7os em Portland, Seattle. &#8221;<\/p>\n<p>Como a\u00a0<code>mySS<\/code>\u00a0vari\u00e1vel \u00e9 uma refer\u00eancia \u00e0 planilha, voc\u00ea pode tornar seu c\u00f3digo mais limpo e eficiente chamando\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code><\/a>\u00a0m\u00e9todos em em\u00a0<code>mySS<\/code>\u00a0vez de\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet-app#getactivespreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>getActiveSpreadsheet()<\/code><\/a>\u00a0repetidamente.<\/p>\n<p>&nbsp;<\/p>\n<h4>Duplicando a p\u00e1gina ativa<\/h4>\n<p>Em sua planilha atual, voc\u00ea tem atualmente apenas uma p\u00e1gina.\u00a0Voc\u00ea pode chamar o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet#duplicateactivesheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet.duplicateActiveSheet()<\/code><\/a>\u00a0m\u00e9todo para fazer uma c\u00f3pia dessa folha:<\/p>\n<ol start=\"1\" type=\"1\">\n<li>Adicione a seguinte nova fun\u00e7\u00e3o abaixo da\u00a0<code>renameSpreadsheet()<\/code>fun\u00e7\u00e3o que j\u00e1 est\u00e1 em seu projeto de script:<\/li>\n<\/ol>\n<pre><code><span class=\"kwd\">function<\/span><span class=\"pln\"> duplicateAndOrganizeActiveSheet<\/span><span class=\"pun\">()<\/span> <span class=\"pun\">{<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> mySS <\/span><span class=\"pun\">=<\/span> <span class=\"typ\">SpreadsheetApp<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getActiveSpreadsheet<\/span><span class=\"pun\">();<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> duplicateSheet <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> mySS<\/span><span class=\"pun\">.<\/span><span class=\"pln\">duplicateActiveSheet<\/span><span class=\"pun\">();<\/span>\r\n<span class=\"pun\">}<\/span><\/code><\/pre>\n<ol start=\"2\" type=\"1\">\n<li>Salve seu projeto de script.<\/li>\n<li>Execute a nova fun\u00e7\u00e3o selecionando\u00a0<code>duplicateAndOrganizeActiveSheet<\/code>\u00a0na barra de ferramentas e clicando no\u00a0<img title=\"Corre\" src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-2\/img\/520b3b8ae24db874.png\" \/>bot\u00e3o.<\/li>\n<\/ol>\n<p>Agora voc\u00ea deve ver uma nova p\u00e1gina em sua planilha!\u00a0Volte para o Planilhas e uma nova guia de planilha &#8220;C\u00f3pia da Planilha_Original&#8221; dever\u00e1 existir.<\/p>\n<p>&nbsp;<\/p>\n<p class=\"image-container\"><img title=\"Gif: Criando c\u00f3pia de Sheet_Original\" src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-2\/img\/d24f9f4ae20bf7d4.gif\" \/><\/p>\n<p>\u00a0 \u00a0 Nesta nova fun\u00e7\u00e3o, o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet#duplicateactivesheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>duplicateActiveSheet()<\/code><\/a>\u00a0m\u00e9todo cria, ativa e retorna a folha duplicada em sua planilha.\u00a0Essa planilha resultante \u00e9 armazenada em\u00a0<code>duplicateSheet<\/code>, mas o c\u00f3digo ainda n\u00e3o est\u00e1 fazendo nada com essa vari\u00e1vel.<\/p>\n<p>&nbsp;<\/p>\n<h3>Formatando sua planilha com a classe Planilha<\/h3>\n<p>A\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Sheet<\/code><\/a>\u00a0classe fornece m\u00e9todos que permitem aos scripts ler e atualizar planilhas.\u00a0Nesta se\u00e7\u00e3o, voc\u00ea pode aprender como alterar o nome e o espa\u00e7amento de uma planilha com m\u00e9todos da\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Sheet<\/code><\/a>\u00a0classe.<\/p>\n<p>&nbsp;<\/p>\n<aside class=\"warning\">\u00a0 \u00a0 Observa\u00e7\u00e3o\u00a0: as\u00a0classes\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code><\/a>\u00a0e\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Sheet<\/code><\/a>\u00a0compartilham v\u00e1rios m\u00e9todos espec\u00edficos de planilhas, como\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet#deletecolumncolumnposition\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet.deleteColumn(columnPosition)<\/code><\/a>\u00a0e\u00a0.<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet#deletecolumncolumnposition\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Sheet.deleteColumn(<\/code><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet#deletecolumncolumnposition\" target=\"_blank\" rel=\"noopener noreferrer\"><code>columnPosition)<\/code><\/a><\/aside>\n<p>Quando voc\u00ea chama\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet#deletecolumncolumnposition\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet.deleteColumn(columnPosition)<\/code><\/a>, o m\u00e9todo remove colunas da planilha atualmente ativa (aberta) dentro da planilha;\u00a0voc\u00ea pode obter o mesmo resultado chamando\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet#getactivesheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>getActiveSheet()<\/code><\/a>then\u00a0.\u00a0A\u00a0vers\u00e3o simplesmente economiza algum tempo.<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet#deletecolumncolumnposition\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Sheet.deleteColumn(<\/code><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet#deletecolumncolumnposition\" target=\"_blank\" rel=\"noopener noreferrer\"><code>columnPosition<\/code><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet#deletecolumncolumnposition\" target=\"_blank\" rel=\"noopener noreferrer\"><code>)<\/code><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h4>Alterar o nome da folha<\/h4>\n<p>Renomear planilhas \u00e9 t\u00e3o simples quanto renomear a planilha em\u00a0<code>renameSpreadsheet()<\/code>.\u00a0Apenas uma \u00fanica chamada de m\u00e9todo \u00e9 necess\u00e1ria.<\/p>\n<ol start=\"1\" type=\"1\">\n<li>No Planilhas Google, clique na\u00a0<code>Sheets_Original<\/code>p\u00e1gina para ativ\u00e1-la.<\/li>\n<li>Ajuste sua\u00a0<code>duplicateAndOrganizeActiveSheet()<\/code>fun\u00e7\u00e3o para corresponder ao seguinte:<\/li>\n<\/ol>\n<pre><code><span class=\"kwd\">function<\/span><span class=\"pln\"> duplicateAndOrganizeActiveSheet<\/span><span class=\"pun\">()<\/span> <span class=\"pun\">{<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> mySS <\/span><span class=\"pun\">=<\/span> <span class=\"typ\">SpreadsheetApp<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getActiveSpreadsheet<\/span><span class=\"pun\">();<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> duplicateSheet <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> mySS<\/span><span class=\"pun\">.<\/span><span class=\"pln\">duplicateActiveSheet<\/span><span class=\"pun\">();<\/span>\r\n\r\n  <span class=\"com\">\/\/ Change the name of the new sheet.<\/span><span class=\"pln\">\r\n  duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">setName<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"Sheet_\"<\/span> <span class=\"pun\">+<\/span><span class=\"pln\"> duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getSheetId<\/span><span class=\"pun\">());<\/span>\r\n<span class=\"pun\">}<\/span><\/code><\/pre>\n<ol start=\"3\" type=\"1\">\n<li>Salve e execute a fun\u00e7\u00e3o.<\/li>\n<\/ol>\n<p>No Planilhas Google, voc\u00ea pode ver outra planilha duplicada criada e renomeada ao executar a fun\u00e7\u00e3o agora:<\/p>\n<p>&nbsp;<\/p>\n<p class=\"image-container\"><img style=\"outline: none !important; vertical-align: middle; border: 0px;\" title=\"Gif: Criando Folha_ &lt;ID&gt;\" src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-2\/img\/91295f42354f62e7.gif\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>No c\u00f3digo adicionado, o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet#setnamename\" target=\"_blank\" rel=\"noopener noreferrer\"><code>setName(name)<\/code><\/a>\u00a0m\u00e9todo altera o nome de\u00a0<code>duplicateSheet<\/code>, usando\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet#getsheetid\" target=\"_blank\" rel=\"noopener noreferrer\"><code>getSheetID()<\/code><\/a>\u00a0para obter o n\u00famero de identifica\u00e7\u00e3o exclusivo da folha.\u00a0O\u00a0<code>+<\/code>\u00a0operador concatena o ID da folha ao final de\u00a0<code>\"Sheet_\"<\/code>.<\/p>\n<p>&nbsp;<\/p>\n<h4>Ajustando as colunas e linhas de uma planilha<\/h4>\n<p>Voc\u00ea tamb\u00e9m pode usar a\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Sheet<\/code><\/a>\u00a0classe para formatar sua planilha.\u00a0Por exemplo, podemos atualizar sua\u00a0<code>duplicateAndOrganizeActiveSheet()<\/code>\u00a0fun\u00e7\u00e3o para redimensionar as colunas da planilha duplicada e adicionar algumas linhas congeladas:<\/p>\n<ol start=\"1\" type=\"1\">\n<li>No Planilhas Google, clique na\u00a0<code>Sheets_Original<\/code>\u00a0p\u00e1gina para ativ\u00e1-la.<\/li>\n<li>Ajuste sua\u00a0<code>duplicateAndOrganizeActiveSheet()<\/code>\u00a0fun\u00e7\u00e3o para corresponder ao seguinte:<\/li>\n<\/ol>\n<pre><code><span class=\"kwd\">function<\/span><span class=\"pln\"> duplicateAndOrganizeActiveSheet<\/span><span class=\"pun\">()<\/span> <span class=\"pun\">{<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> mySS <\/span><span class=\"pun\">=<\/span> <span class=\"typ\">SpreadsheetApp<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getActiveSpreadsheet<\/span><span class=\"pun\">();<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> duplicateSheet <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> mySS<\/span><span class=\"pun\">.<\/span><span class=\"pln\">duplicateActiveSheet<\/span><span class=\"pun\">();<\/span>\r\n\r\n  <span class=\"com\">\/\/ Change the name of the new sheet.<\/span><span class=\"pln\">\r\n  duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">setName<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"Sheet_\"<\/span> <span class=\"pun\">+<\/span><span class=\"pln\"> duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getSheetId<\/span><span class=\"pun\">());<\/span>\r\n\r\n  <span class=\"com\">\/\/ Format the new sheet.<\/span><span class=\"pln\">\r\n  duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">autoResizeColumns<\/span><span class=\"pun\">(<\/span><span class=\"lit\">1<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">5<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n  duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">setFrozenRows<\/span><span class=\"pun\">(<\/span><span class=\"lit\">2<\/span><span class=\"pun\">);<\/span>\r\n<span class=\"pun\">}<\/span><\/code><\/pre>\n<ol start=\"3\" type=\"1\">\n<li>Salve e execute a fun\u00e7\u00e3o.<\/li>\n<\/ol>\n<p>No Planilhas Google, voc\u00ea pode ver uma nova planilha criada, renomeada, ativada e formatada:<\/p>\n<p>&nbsp;<\/p>\n<p class=\"image-container\"><img title=\"Gif: reajustando o espa\u00e7o da coluna e congelando linhas\" src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-2\/img\/2e57c917ab157dad.gif\" width=\"835\" height=\"273\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>O c\u00f3digo que voc\u00ea acabou de adicionar usa\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet#autoResizeColumns(Integer,Integer)\" target=\"_blank\" rel=\"noopener noreferrer\"><code>autoResizeColumns(startColumn, numColumns)<\/code><\/a>para redimensionar as colunas da planilha para facilitar a leitura.\u00a0O\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet#setfrozenrowsrows\" target=\"_blank\" rel=\"noopener noreferrer\"><code>setFrozenRows(rows)<\/code><\/a>m\u00e9todo congela um determinado n\u00famero de linhas (duas, neste caso), o que faz com que as linhas permane\u00e7am vis\u00edveis enquanto o leitor rola a planilha para baixo.<\/p>\n<p>&nbsp;<\/p>\n<aside class=\"warning\">\u00a0 \u00a0 Observa\u00e7\u00e3o:\u00a0ao trabalhar com matrizes no Apps Script, voc\u00ea segue a conven\u00e7\u00e3o de que a lista come\u00e7a no \u00edndice 0. Mas, ao trabalhar com linhas e colunas, o \u00edndice come\u00e7a em 1. Essa l\u00f3gica se alinha mais com a\u00a0<a class=\"autolink\" title=\"Formata\u00e7\u00e3o\" href=\"https:\/\/ava.ufpel.edu.br\/pre\/mod\/page\/view.php?id=174906\">formata\u00e7\u00e3o<\/a>\u00a0de planilha convencional onde voc\u00ea faria comece na linha 1 e coluna A nas planilhas.Esteja ciente disso ao usar m\u00e9todos relacionados a colunas e linhas, como\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet#autoResizeColumns(Integer,Integer)\" target=\"_blank\" rel=\"noopener noreferrer\"><code>autoResizeColumns(startColumn,numColumns)<\/code><\/a>.\u00a0Em nosso exerc\u00edcio atual, voc\u00ea insere 1 (n\u00e3o 0) como um par\u00e2metro para referenciar a coluna A de\u00a0<code>duplicateSheet<\/code>.&nbsp;<\/p>\n<\/aside>\n<h3 class=\"step-title\">Reorganizando dados com a classe Range<\/h3>\n<p>A\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Range<\/code><\/a>\u00a0classe e seus m\u00e9todos fornecem a maior parte da manipula\u00e7\u00e3o e\u00a0<a class=\"autolink\" title=\"Formata\u00e7\u00e3o de Dados\" href=\"https:\/\/ava.ufpel.edu.br\/pre\/mod\/page\/view.php?id=179367\">formata\u00e7\u00e3o de dados<\/a>\u00a0no\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/\" target=\"_blank\" rel=\"noopener noreferrer\">servi\u00e7o de planilha<\/a>\u00a0.<\/p>\n<p>Esta se\u00e7\u00e3o apresenta a manipula\u00e7\u00e3o de dados b\u00e1sicos com\u00a0intervalos.\u00a0Esses exerc\u00edcios se concentram mais em como utilizar\u00a0intervalos\u00a0no Apps Script, enquanto os codelabs nesta lista de reprodu\u00e7\u00e3o se aprofundam na manipula\u00e7\u00e3o e\u00a0<a class=\"autolink\" title=\"Formata\u00e7\u00e3o de Dados\" href=\"https:\/\/ava.ufpel.edu.br\/pre\/mod\/page\/view.php?id=179367\">formata\u00e7\u00e3o de dados<\/a>.<\/p>\n<h4><\/h4>\n<h4>Alcances m\u00f3veis<\/h4>\n<p>Voc\u00ea pode ativar e mover\u00a0intervalos\u00a0de dados com m\u00e9todos de classe e\u00a0nota\u00e7\u00e3o A1\u00a0, uma forma abreviada para identificar conjuntos espec\u00edficos de c\u00e9lulas em planilhas.\u00a0Voc\u00ea pode verificar esta\u00a0<a href=\"https:\/\/developers.google.com\/sheets\/api\/guides\/concepts#a1_notation\" target=\"_blank\" rel=\"noopener noreferrer\">descri\u00e7\u00e3o da nota\u00e7\u00e3o A1<\/a>\u00a0se precisar se familiarizar novamente com o formato.<\/p>\n<p>Vamos atualizar seu\u00a0<code>duplicateAndOrganizeActiveSheet()<\/code>\u00a0m\u00e9todo para tamb\u00e9m mover alguns dados:<\/p>\n<ol start=\"1\" type=\"1\">\n<li>No Planilhas Google, clique na\u00a0<code>Sheets_Original<\/code>\u00a0p\u00e1gina para ativ\u00e1-la.<\/li>\n<li>Ajuste sua\u00a0<code>duplicateAndOrganizeActiveSheet()<\/code>\u00a0fun\u00e7\u00e3o para corresponder ao seguinte:<\/li>\n<\/ol>\n<pre><code><span class=\"kwd\">function<\/span><span class=\"pln\"> duplicateAndOrganizeActiveSheet<\/span><span class=\"pun\">()<\/span> <span class=\"pun\">{<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> mySS <\/span><span class=\"pun\">=<\/span> <span class=\"typ\">SpreadsheetApp<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getActiveSpreadsheet<\/span><span class=\"pun\">();<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> duplicateSheet <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> mySS<\/span><span class=\"pun\">.<\/span><span class=\"pln\">duplicateActiveSheet<\/span><span class=\"pun\">();<\/span>\r\n\r\n  <span class=\"com\">\/\/ Change the name of the new sheet.<\/span><span class=\"pln\">\r\n  duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">setName<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"Sheet_\"<\/span> <span class=\"pun\">+<\/span><span class=\"pln\"> duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getSheetId<\/span><span class=\"pun\">());<\/span>\r\n\r\n  <span class=\"com\">\/\/ Format the new sheet.<\/span><span class=\"pln\">\r\n  duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">autoResizeColumns<\/span><span class=\"pun\">(<\/span><span class=\"lit\">1<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">5<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n  duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">setFrozenRows<\/span><span class=\"pun\">(<\/span><span class=\"lit\">2<\/span><span class=\"pun\">);<\/span>\r\n\r\n  <span class=\"com\">\/\/ Move column F to column C.<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> myRange <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getRange<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"F2:F\"<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n  myRange<\/span><span class=\"pun\">.<\/span><span class=\"pln\">moveTo<\/span><span class=\"pun\">(<\/span><span class=\"pln\">duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getRange<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"C2\"<\/span><span class=\"pun\">));<\/span>\r\n<span class=\"pun\">}<\/span><\/code><\/pre>\n<ol start=\"3\" type=\"1\">\n<li>Salve e execute a fun\u00e7\u00e3o.<\/li>\n<\/ol>\n<p>Quando voc\u00ea executa esta fun\u00e7\u00e3o, voc\u00ea pode ver outra folha duplicada criada, ativada e formatada.\u00a0Desta vez, por\u00e9m, o conte\u00fado da coluna F \u00e9 movido para a coluna C:<\/p>\n<p class=\"image-container\"><img title=\"Gif: dist\u00e2ncias m\u00f3veis\" src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-2\/img\/10ea483aec52457e.gif\" width=\"830\" height=\"239\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>O novo c\u00f3digo usa o m\u00e9todo\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet#getrangea1notation\" target=\"_blank\" rel=\"noopener noreferrer\"><code>getRange(<\/code><code>a1Notation<\/code><code>)<\/code><\/a>\u00a0para identificar qual intervalo de dados voc\u00ea deseja mover.\u00a0Ao inserir a nota\u00e7\u00e3o A1 &#8220;F2: F&#8221; como o par\u00e2metro do m\u00e9todo, voc\u00ea especifica a coluna F (excluindo F1).\u00a0Se o intervalo especificado existir, o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet#getrangea1notation\" target=\"_blank\" rel=\"noopener noreferrer\"><code>getRange(<\/code><code>a1Notation<\/code><code>)<\/code><\/a>\u00a0m\u00e9todo retornar\u00e1 sua\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Range<\/code><\/a>\u00a0inst\u00e2ncia.\u00a0O c\u00f3digo armazena a inst\u00e2ncia na\u00a0<code>myRange<\/code>\u00a0vari\u00e1vel para facilidade de uso.<\/p>\n<p>Uma vez que o intervalo \u00e9 identificado, o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range#moveTo(Range)\" target=\"_blank\" rel=\"noopener noreferrer\"><code>moveTo(target)<\/code><\/a>\u00a0m\u00e9todo pega o conte\u00fado de\u00a0<code>myRange<\/code>\u00a0(os valores e a\u00a0<a class=\"autolink\" title=\"Formata\u00e7\u00e3o\" href=\"https:\/\/ava.ufpel.edu.br\/pre\/mod\/page\/view.php?id=174906\">formata\u00e7\u00e3o<\/a>) e os move.\u00a0O destino (coluna C) \u00e9 especificado pela nota\u00e7\u00e3o A1 &#8220;C2&#8221;.\u00a0Esta \u00e9 uma \u00fanica c\u00e9lula, em vez de uma coluna.\u00a0Ao mover dados, voc\u00ea n\u00e3o precisa corresponder exatamente os tamanhos aos\u00a0intervalos\u00a0de destino e destino;\u00a0O Apps Script simplesmente alinhar\u00e1 a primeira c\u00e9lula de cada um.<\/p>\n<aside class=\"warning\">\n<aside class=\"warning\">\u00a0 \u00a0 Nota:\u00a0Ao escrever seus pr\u00f3prios scripts, certifique-se de test\u00e1-los completamente para garantir que seus dados cheguem onde voc\u00ea deseja.\u00a0O Apps Script substituir\u00e1 os valores de dados existentes ao alterar os valores das c\u00e9lulas.\u00a0Se voc\u00ea n\u00e3o tiver cuidado, poder\u00e1 sobrescrever os dados que pretende manter.\u00a0Neste exemplo, a coluna C estava vazia, mas se houvesse dados l\u00e1, o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range#moveTo(Range)\" target=\"_blank\" rel=\"noopener noreferrer\"><code>moveTo(target)<\/code><\/a>\u00a0m\u00e9todo os teria removido.\u00a0<\/aside>\n<\/aside>\n<h4>Intervalos\u00a0de classifica\u00e7\u00e3o<\/h4>\n<p>A\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Range<\/code><\/a>\u00a0classe permite que voc\u00ea leia, atualize e organize grupos de c\u00e9lulas.\u00a0Por exemplo, voc\u00ea pode classificar um intervalo de dados usando o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range#sort(Object)\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Range.sort(sortSpecObj)<\/code><\/a>\u00a0m\u00e9todo:<\/p>\n<ol start=\"1\" type=\"1\">\n<li>No Planilhas Google, clique na\u00a0<code>Sheets_Original<\/code>\u00a0p\u00e1gina para ativ\u00e1-la.<\/li>\n<li>Ajuste sua\u00a0<code>duplicateAndOrganizeActiveSheet()<\/code>\u00a0fun\u00e7\u00e3o para corresponder ao seguinte:<\/li>\n<\/ol>\n<pre><code><span class=\"kwd\">function<\/span><span class=\"pln\"> duplicateAndOrganizeActiveSheet<\/span><span class=\"pun\">()<\/span> <span class=\"pun\">{<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> mySS <\/span><span class=\"pun\">=<\/span> <span class=\"typ\">SpreadsheetApp<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getActiveSpreadsheet<\/span><span class=\"pun\">();<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> duplicateSheet <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> mySS<\/span><span class=\"pun\">.<\/span><span class=\"pln\">duplicateActiveSheet<\/span><span class=\"pun\">();<\/span>\r\n\r\n  <span class=\"com\">\/\/ Change the name of the new sheet.<\/span><span class=\"pln\">\r\n  duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">setName<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"Sheet_\"<\/span> <span class=\"pun\">+<\/span><span class=\"pln\"> duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getSheetId<\/span><span class=\"pun\">());<\/span>\r\n\r\n  <span class=\"com\">\/\/ Format the new sheet.<\/span><span class=\"pln\">\r\n  duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">autoResizeColumns<\/span><span class=\"pun\">(<\/span><span class=\"lit\">1<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">5<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n  duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">setFrozenRows<\/span><span class=\"pun\">(<\/span><span class=\"lit\">2<\/span><span class=\"pun\">);<\/span>\r\n\r\n  <span class=\"com\">\/\/ Move column F to column C.<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> myRange <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getRange<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"F2:F\"<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n  myRange<\/span><span class=\"pun\">.<\/span><span class=\"pln\">moveTo<\/span><span class=\"pun\">(<\/span><span class=\"pln\">duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getRange<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"C2\"<\/span><span class=\"pun\">));<\/span>\r\n\r\n  <span class=\"com\">\/\/ Sort all the data using column C (Price information).<\/span><span class=\"pln\">\r\n  myRange <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> duplicateSheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getRange<\/span><span class=\"pun\">(<\/span><span class=\"str\">\"A3:D55\"<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n  myRange<\/span><span class=\"pun\">.<\/span><span class=\"pln\">sort<\/span><span class=\"pun\">(<\/span><span class=\"lit\">3<\/span><span class=\"pun\">);<\/span>\r\n<span class=\"pun\">}<\/span><\/code><\/pre>\n<ol start=\"3\" type=\"1\">\n<li>Salve e execute a fun\u00e7\u00e3o.<\/li>\n<\/ol>\n<p>Agora a fun\u00e7\u00e3o, al\u00e9m de nossa\u00a0<a class=\"autolink\" title=\"Formata\u00e7\u00e3o\" href=\"https:\/\/ava.ufpel.edu.br\/pre\/mod\/page\/view.php?id=174906\">formata\u00e7\u00e3o<\/a>\u00a0anterior, classificar\u00e1 todos os dados da tabela usando as informa\u00e7\u00f5es de pre\u00e7o na coluna C:<\/p>\n<p class=\"image-container\"><img style=\"outline: none !important; vertical-align: middle; border: 0px;\" title=\"Ordenado por data -&gt; Ordenado por pre\u00e7o\" src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-2\/img\/a6cc9710245fae8d.png\" width=\"833\" height=\"489\" \/><\/p>\n<p>\u00a0 \u00a0 O novo c\u00f3digo usa\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet#getrangea1notation\" target=\"_blank\" rel=\"noopener noreferrer\"><code>getRange(<\/code><code>a1Notation<\/code><code>)<\/code><\/a>\u00a0para especificar um novo intervalo abrangendo A3: D55 (ou seja, toda a tabela excluindo os cabe\u00e7alhos das colunas).\u00a0O c\u00f3digo ent\u00e3o chama o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range#sort(Object)\" target=\"_blank\" rel=\"noopener noreferrer\"><code>sort(sortSpecObj)<\/code><\/a>\u00a0m\u00e9todo para classificar a tabela.\u00a0Aqui, o\u00a0<code>sortSpecObj<\/code>\u00a0par\u00e2metro \u00e9 apenas um n\u00famero de coluna para classificar;\u00a0o m\u00e9todo classifica o intervalo de forma que os valores da coluna indicados v\u00e3o do menor ao maior (valores crescentes).\u00a0O\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range#sort(Object)\" target=\"_blank\" rel=\"noopener noreferrer\"><code>sort(sortSpecObj)<\/code><\/a>\u00a0m\u00e9todo \u00e9 capaz de atender a requisitos de classifica\u00e7\u00e3o mais complexos, mas voc\u00ea n\u00e3o precisa deles aqui;\u00a0voc\u00ea pode ver todas as diferentes maneiras de chamar\u00a0intervalos\u00a0de classifica\u00e7\u00e3o na\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range#sort(Object)\" target=\"_blank\" rel=\"noopener noreferrer\">documenta\u00e7\u00e3o de refer\u00eancia<\/a>\u00a0do\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range#sort(Object)\" target=\"_blank\" rel=\"noopener noreferrer\">m\u00e9todo<\/a>\u00a0.<\/p>\n<p>&nbsp;<\/p>\n<p>Nesse tutorial n\u00f3s vimos:<\/p>\n<ul class=\"checklist\">\n<li>Como planilhas, p\u00e1ginas e\u00a0intervalos\u00a0s\u00e3o representados no Apps Script.<\/li>\n<li>Alguns usos b\u00e1sicos das\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet-app\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SpreadsheetApp<\/code><\/a>,\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code><\/a>,\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Sheet<\/code><\/a>, e\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Range<\/code><\/a>classes.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<aside class=\"special\">\u00a0 \u00a0 Alguns conceitos-chave\u00a0importantes:<\/p>\n<ol start=\"1\" type=\"1\">\n<li>No Apps Script, todos os arrays seguem a conven\u00e7\u00e3o de que a lista come\u00e7a no \u00edndice 0. As linhas e colunas, no entanto, s\u00e3o indexadas a partir de 1.<\/li>\n<li>No Apps Script, a planilha aberta no momento, o intervalo destacado e a c\u00e9lula s\u00e3o considerados\u00a0ativos\u00a0.\u00a0Muitos m\u00e9todos do Apps Script acessam ou modificam o elemento ativo.<\/li>\n<li>As\u00a0classes\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code><\/a>\u00a0e\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Sheet<\/code><\/a>\u00a0compartilham v\u00e1rios m\u00e9todos espec\u00edficos de folha.\u00a0Os m\u00e9todos duplicados na\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code><\/a>\u00a0classe s\u00e3o apenas para conveni\u00eancia do usu\u00e1rio, j\u00e1 que normalmente visam a planilha atualmente ativa quando chamados.<\/li>\n<li>Cada planilha e folha possui um ID exclusivo, que voc\u00ea pode ver na linha do URL do navegador.\u00a0Os m\u00e9todos de planilha e planilha utilizam IDs de planilha e planilha.\u00a0Voc\u00ea pode aprender mais sobre IDs e URLs de planilhas na\u00a0<a href=\"https:\/\/developers.google.com\/sheets\/api\/guides\/concepts\" target=\"_blank\" rel=\"noopener noreferrer\">Introdu\u00e7\u00e3o ao Planilhas Google<\/a>\u00a0.<\/li>\n<\/ol>\n<\/aside>\n<aside class=\"special\">Termos-chave\u00a0:<\/p>\n<ul>\n<li>Ativo (status)\u00a0: indica que a planilha, planilha, intervalo ou c\u00e9lula especificada \u00e9 a que est\u00e1 sendo exibida ou destacada pelo usu\u00e1rio da planilha.<\/li>\n<li>C\u00e9lula ativa:\u00a0a \u00fanica c\u00e9lula destacada na planilha ativa que tem o foco do cursor.<\/li>\n<li>Intervalo ativo\u00a0: o grupo de uma ou mais c\u00e9lulas atualmente destacadas na p\u00e1gina ativa.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/guides\/services\/authorization\" target=\"_blank\" rel=\"noopener noreferrer\">Autoriza\u00e7\u00e3o<\/a>\u00a0: o processo em que o usu\u00e1rio concede permiss\u00f5es para permitir que o Apps Script acesse dados privados nos servi\u00e7os relevantes do Google.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/guides\/bound\" target=\"_blank\" rel=\"noopener noreferrer\">Script vinculado ao cont\u00eainer<\/a>\u00a0: qualquer script vinculado e criado a partir de um documento do G Suite, como uma planilha ou um documento do Google.<\/li>\n<li>Intervalo:\u00a0um intervalo representa um grupo de uma ou mais c\u00e9lulas adjacentes em uma p\u00e1gina.\u00a0A\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/range\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Range<\/code><\/a>\u00a0classe oferece a capacidade de ler e atualizar\u00a0intervalos\u00a0em uma planilha.<\/li>\n<li>Editor de script\u00a0: o editor de c\u00f3digo do Apps Script.<\/li>\n<li>Folha\u00a0: uma \u00fanica p\u00e1gina de uma planilha.\u00a0A\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Sheet<\/code><\/a>\u00a0classe permite acessar e modificar planilhas.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet-app\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SpreadsheetApp<\/code><\/a>:\u00a0A\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet-app\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SpreadsheetApp<\/code><\/a>\u00a0classe serve como classe pai para o servi\u00e7o de planilha e fornece um ponto de partida para o c\u00f3digo que l\u00ea ou manipula dados do Planilhas Google.<\/li>\n<li>Planilha\u00a0: um arquivo do Planilhas Google que reside no Google Drive.\u00a0A\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code><\/a>\u00a0classe permite que voc\u00ea acesse e modifique planilhas.<\/li>\n<\/ul>\n<\/aside>\n","protected":false},"excerpt":{"rendered":"<p>Apresentando o servi\u00e7o de planilha Quatro classes englobam a funda\u00e7\u00e3o do servi\u00e7o de planilha:\u00a0SpreadsheetApp,\u00a0Spreadsheet,\u00a0Sheet, e\u00a0Range.\u00a0Esta se\u00e7\u00e3o descreve essas classes e para que s\u00e3o usadas. &nbsp; A classe SpreadsheetApp Antes de aprofundar em planilhas, folhas, e\u00a0intervalos, voc\u00ea deve olhar para o seu sua classe pai:\u00a0SpreadsheetApp.\u00a0Muitos scripts come\u00e7am chamando\u00a0SpreadsheetApp\u00a0m\u00e9todos, pois eles podem fornecer o ponto inicial de [&hellip;]<\/p>\n","protected":false},"author":667,"featured_media":0,"parent":349,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"class_list":["post-706","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/wp-json\/wp\/v2\/pages\/706","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/wp-json\/wp\/v2\/users\/667"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/wp-json\/wp\/v2\/comments?post=706"}],"version-history":[{"count":5,"href":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/wp-json\/wp\/v2\/pages\/706\/revisions"}],"predecessor-version":[{"id":735,"href":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/wp-json\/wp\/v2\/pages\/706\/revisions\/735"}],"up":[{"embeddable":true,"href":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/wp-json\/wp\/v2\/pages\/349"}],"wp:attachment":[{"href":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/wp-json\/wp\/v2\/media?parent=706"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}