{"id":709,"date":"2020-08-27T23:53:53","date_gmt":"2020-08-28T02:53:53","guid":{"rendered":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/?page_id=709"},"modified":"2020-08-28T00:06:22","modified_gmt":"2020-08-28T03:06:22","slug":"tracando-um-grafico-e-apresentando-dados-nos-slides","status":"publish","type":"page","link":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/modulo-avancado\/aula-3-scripts-google\/tracando-um-grafico-e-apresentando-dados-nos-slides\/","title":{"rendered":"Tra\u00e7ando um Gr\u00e1fico e Apresentando Dados nos Slides"},"content":{"rendered":"<h3 class=\"step-title\">Configurando<\/h3>\n<p>Antes de continuar, voc\u00ea precisa de uma planilha com alguns dados.\u00a0Como antes, fornecemos uma folha de dados que voc\u00ea pode copiar para esses exerc\u00edcios.\u00a0Execute as seguintes etapas:<\/p>\n<ol start=\"1\" type=\"1\">\n<li><a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1icgRPxGQ7vGqx9HxdJvDh2TGJG8GqdMEBIhw6vUW5uk\/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.\u00a0A nova planilha \u00e9 colocada em sua pasta inicial do Google Drive e \u00e9 chamada de &#8220;C\u00f3pia de datas e taxas de c\u00e2mbio do d\u00f3lar americano&#8221;.<\/li>\n<li>Clique no t\u00edtulo da planilha e altere de &#8220;C\u00f3pia de datas e taxas de c\u00e2mbio do USD&#8221; para &#8220;Datas e taxas de c\u00e2mbio do USD&#8221;.\u00a0Sua planilha deve ser semelhante a esta, com algumas informa\u00e7\u00f5es b\u00e1sicas sobre as diferentes taxas de c\u00e2mbio do d\u00f3lar americano em datas diferentes:<\/li>\n<\/ol>\n<p class=\"image-container\"><img src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-5\/img\/45a3e8814ecb07fc.png\" width=\"835\" height=\"318\" \/><\/p>\n<ol start=\"3\" type=\"1\">\n<li>Selecione\u00a0Ferramentas&gt; Editor de scripts\u00a0para abrir o editor de scripts:<\/li>\n<\/ol>\n<p class=\"image-container\"><img src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-5\/img\/5363d2c14d2aa5af.png\" \/><\/p>\n<p>\u00a0 \u00a0 Para economizar seu tempo, inclu\u00edmos um pouco de c\u00f3digo para configurar um menu personalizado nesta planilha.\u00a0Voc\u00ea deve ter visto o menu aparecer quando sua c\u00f3pia da planilha foi aberta:<\/p>\n<p class=\"image-container\"><img title=\"Imagem: menu personalizado circulado no Planilhas\" src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-5\/img\/9b9caf6c1e9de34b.png\" width=\"838\" height=\"100\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Observa\u00e7\u00e3o\u00a0: se precisar de uma atualiza\u00e7\u00e3o, voc\u00ea pode aprender mais sobre menus personalizados e\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/guides\/triggers\/\" target=\"_blank\" rel=\"noopener noreferrer\"><code>onOpen()<\/code><\/a>no\u00a0codelab\u00a0<a href=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-3\" target=\"_blank\" rel=\"noopener noreferrer\">Trabalhando com dados<\/a>\u00a0.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<aside class=\"special\">\u00a0 \u00a0 Ponto-chave:\u00a0como a planilha que voc\u00ea copiou tem um projeto de script vinculado a ela, quando a planilha \u00e9 copiada, o projeto de script tamb\u00e9m est\u00e1.\u00a0Lembre-se de que esta \u00e9 uma\u00a0<em>c\u00f3pia<\/em>\u00a0do projeto de script original &#8211; se voc\u00ea fizer altera\u00e7\u00f5es na c\u00f3pia, elas n\u00e3o ser\u00e3o refletidas no original e vice-versa.<\/aside>\n<p>&nbsp;<\/p>\n<p>Com esta planilha e projeto, voc\u00ea est\u00e1 pronto para iniciar o laborat\u00f3rio!\u00a0Passe para a pr\u00f3xima se\u00e7\u00e3o para come\u00e7ar a aprender sobre\u00a0gr\u00e1ficos\u00a0e gatilhos baseados em tempo.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h3 class=\"step-title\">Crie um gr\u00e1fico no Planilhas com o Apps Script<\/h3>\n<p>Suponha que voc\u00ea queira criar um gr\u00e1fico espec\u00edfico para visualizar um conjunto de dados.\u00a0Voc\u00ea pode realmente usar o Apps Script para criar, editar e colocar\u00a0gr\u00e1ficos\u00a0no Planilhas Google!\u00a0Quando um gr\u00e1fico \u00e9 criado e colocado no Planilhas Google, ele \u00e9 chamado de\u00a0<em>gr\u00e1fico incorporado.<\/em><\/p>\n<p>Os\u00a0gr\u00e1ficos\u00a0incorporados s\u00e3o\u00a0gr\u00e1ficos\u00a0contidos em uma planilha.\u00a0Os\u00a0gr\u00e1ficos\u00a0s\u00e3o usados \u200b\u200bpara visualizar uma ou mais s\u00e9ries de dados;\u00a0para\u00a0gr\u00e1ficos\u00a0incorporados, os dados que eles apresentam geralmente v\u00eam de dados de formul\u00e1rio dentro da pr\u00f3pria planilha.\u00a0Na maioria dos casos, a atualiza\u00e7\u00e3o dos dados na planilha far\u00e1 com que o Planilhas Google tamb\u00e9m atualize automaticamente o gr\u00e1fico.<\/p>\n<p>Voc\u00ea pode usar o Apps Script para criar\u00a0gr\u00e1ficos\u00a0incorporados personalizados do zero ou atualizar\u00a0gr\u00e1ficos\u00a0existentes.\u00a0Esta se\u00e7\u00e3o apresenta os fundamentos da constru\u00e7\u00e3o de\u00a0gr\u00e1ficos\u00a0incorporados no Planilhas com Apps Script e o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code>\u00a0servi\u00e7o<\/a>\u00a0.<\/p>\n<p>&nbsp;<\/p>\n<aside class=\"warning\">\u00a0 \u00a0 Advert\u00eancia:\u00a0embora voc\u00ea possa usar o Apps Script para fazer muitas coisas com\u00a0gr\u00e1ficos, h\u00e1 algumas coisas que voc\u00ea n\u00e3o pode fazer.\u00a0O\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code>\u00a0servi\u00e7o<\/a>\u00a0fornece v\u00e1rias\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-chart\" target=\"_blank\" rel=\"noopener noreferrer\"><code>EmbeddedChart<\/code><\/a>\u00a0classes que fornecem funcionalidade de gr\u00e1fico, mas essas classes n\u00e3o cobrem todas as op\u00e7\u00f5es de configura\u00e7\u00e3o poss\u00edveis.\u00a0Al\u00e9m disso, nos bastidores, o Apps Script est\u00e1 usando a\u00a0<a href=\"https:\/\/developers.google.com\/chart\" target=\"_blank\" rel=\"noopener noreferrer\">API Google Charts<\/a>\u00a0, que tem suas pr\u00f3prias limita\u00e7\u00f5es.Devido a esses limites, geralmente \u00e9 \u00fatil usar o Apps Script para criar ou editar\u00a0gr\u00e1ficos\u00a0b\u00e1sicos primeiro e, em seguida, ajustar manualmente sua apar\u00eancia no Planilhas Google, se necess\u00e1rio.\u00a0Talvez voc\u00ea n\u00e3o consiga automatizar todos os processos relacionados a\u00a0gr\u00e1ficos\u00a0no Apps Script, mas certamente pode automatizar muito disso.\u00a0<\/aside>\n<p>&nbsp;<\/p>\n<h4>Implementa\u00e7\u00e3o<\/h4>\n<p>Em sua c\u00f3pia da planilha de dados, o conjunto de dados &#8220;Datas e taxas de c\u00e2mbio&#8221; mostra as taxas de c\u00e2mbio (para 1 d\u00f3lar americano) de moedas diferentes em datas diferentes.\u00a0Voc\u00ea implementar\u00e1 uma fun\u00e7\u00e3o do Apps Script que cria um novo gr\u00e1fico para visualizar parte desses dados.<\/p>\n<p>Execute as seguintes etapas:<\/p>\n<ol start=\"1\" type=\"1\">\n<li>No editor do Apps Script, adicione a seguinte fun\u00e7\u00e3o ao final do script do seu projeto de\u00a0<code>Code.gs<\/code>script, ap\u00f3s a\u00a0<code>onOpen()<\/code>fun\u00e7\u00e3o:<\/li>\n<\/ol>\n<pre><code><span class=\"com\">\/**\r\n * Creates and inserts an embedded\r\n * line chart into the active sheet.\r\n *\/<\/span>\r\n<span class=\"kwd\">function<\/span><span class=\"pln\"> createEmbeddedLineChart<\/span><span class=\"pun\">()<\/span> <span class=\"pun\">{<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> sheet <\/span><span class=\"pun\">=<\/span> <span class=\"typ\">SpreadsheetApp<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getActiveSheet<\/span><span class=\"pun\">();<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> chartDataRange <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> sheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getRange<\/span><span class=\"pun\">(<\/span>\r\n    <span class=\"str\">'Dates and USD Exchange Rates dataset!A2:F102'<\/span><span class=\"pun\">);<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> hAxisOptions <\/span><span class=\"pun\">=<\/span> <span class=\"pun\">{<\/span><span class=\"pln\">\r\n    slantedText<\/span><span class=\"pun\">:<\/span> <span class=\"kwd\">true<\/span><span class=\"pun\">,<\/span><span class=\"pln\">\r\n    slantedTextAngle<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">60<\/span><span class=\"pun\">,<\/span><span class=\"pln\">\r\n    gridlines<\/span><span class=\"pun\">:<\/span> <span class=\"pun\">{<\/span><span class=\"pln\">\r\n      count<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">12<\/span>\r\n    <span class=\"pun\">}<\/span>\r\n  <span class=\"pun\">};<\/span>\r\n  \r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> lineChartBuilder <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> sheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">newChart<\/span><span class=\"pun\">().<\/span><span class=\"pln\">asLineChart<\/span><span class=\"pun\">();<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> chart <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> lineChartBuilder\r\n    <\/span><span class=\"pun\">.<\/span><span class=\"pln\">addRange<\/span><span class=\"pun\">(<\/span><span class=\"pln\">chartDataRange<\/span><span class=\"pun\">)<\/span>\r\n    <span class=\"pun\">.<\/span><span class=\"pln\">setPosition<\/span><span class=\"pun\">(<\/span><span class=\"lit\">5<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">8<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">0<\/span><span class=\"pun\">,<\/span> <span class=\"lit\">0<\/span><span class=\"pun\">)<\/span>\r\n    <span class=\"pun\">.<\/span><span class=\"pln\">setTitle<\/span><span class=\"pun\">(<\/span><span class=\"str\">'USD Exchange rates'<\/span><span class=\"pun\">)<\/span>\r\n    <span class=\"pun\">.<\/span><span class=\"pln\">setNumHeaders<\/span><span class=\"pun\">(<\/span><span class=\"lit\">1<\/span><span class=\"pun\">)<\/span>\r\n    <span class=\"pun\">.<\/span><span class=\"pln\">setLegendPosition<\/span><span class=\"pun\">(<\/span><span class=\"typ\">Charts<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Position<\/span><span class=\"pun\">.<\/span><span class=\"pln\">RIGHT<\/span><span class=\"pun\">)<\/span>\r\n    <span class=\"pun\">.<\/span><span class=\"pln\">setOption<\/span><span class=\"pun\">(<\/span><span class=\"str\">'hAxis'<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> hAxisOptions<\/span><span class=\"pun\">)<\/span>\r\n    <span class=\"pun\">.<\/span><span class=\"pln\">build<\/span><span class=\"pun\">();<\/span><span class=\"pln\">\r\n \r\n  sheet<\/span><span class=\"pun\">.<\/span><span class=\"pln\">insertChart<\/span><span class=\"pun\">(<\/span><span class=\"pln\">chart<\/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<\/ol>\n<p>&nbsp;<\/p>\n<h4>Revis\u00e3o de c\u00f3digo<\/h4>\n<p>O c\u00f3digo que voc\u00ea adicionou implementa a fun\u00e7\u00e3o chamada pelo\u00a0item de menu\u00a0Gr\u00e1fico &#8220;Datas e taxas de c\u00e2mbio do USD&#8221;\u00a0.\u00a0Ele cria um gr\u00e1fico de linha b\u00e1sico.\u00a0Vamos revisar o c\u00f3digo!<\/p>\n<p>As primeiras linhas configuram as seguintes tr\u00eas vari\u00e1veis:<\/p>\n<ul>\n<li><code>sheet<\/code>: uma refer\u00eancia \u00e0 planilha ativa atual.<\/li>\n<li><code>chartDataRange<\/code>: uma varia\u00e7\u00e3o dos dados que queremos visualizar.\u00a0O c\u00f3digo usa a nota\u00e7\u00e3o A1 para especificar que o intervalo abrange as c\u00e9lulas de A2 a F102 na planilha denominada\u00a0datas e conjunto de dados de taxas de c\u00e2mbio do USD\u00a0.\u00a0Ao nomear a planilha especificamente, garantimos que o item de menu funcionar\u00e1 mesmo se uma planilha diferente estiver ativa no momento &#8211; o intervalo sempre cobre onde os dados est\u00e3o.\u00a0Incluir a linha 2 neste intervalo significa que estamos incluindo os cabe\u00e7alhos das colunas.\u00a0Decidimos representar graficamente apenas as 100 datas (linhas) mais recentes.<\/li>\n<li><code>hAxisOptions<\/code>: um objeto JavaScript b\u00e1sico que inclui algumas informa\u00e7\u00f5es de configura\u00e7\u00e3o que o c\u00f3digo usa para configurar a apar\u00eancia do eixo horizontal.\u00a0Especificamente, essas configura\u00e7\u00f5es definem os r\u00f3tulos de texto do eixo horizontal em uma inclina\u00e7\u00e3o de 60 graus e define o n\u00famero de linhas de grade verticais para 12.<\/li>\n<\/ul>\n<p>A pr\u00f3xima linha cria um\u00a0objeto\u00a0<em>construtor de gr\u00e1fico de linha<\/em>\u00a0.\u00a0Os\u00a0gr\u00e1ficos\u00a0incorporados no Apps Script s\u00e3o constru\u00eddos usando um\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Builder_pattern\" target=\"_blank\" rel=\"noopener noreferrer\">padr\u00e3o de design Builder<\/a>\u00a0.\u00a0Uma explica\u00e7\u00e3o completa desse padr\u00e3o de design est\u00e1 fora do escopo deste codelab, ent\u00e3o, por enquanto, apenas entenda que o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code>\u00a0servi\u00e7o<\/a>\u00a0fornece v\u00e1rias\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-chart-builder\" target=\"_blank\" rel=\"noopener noreferrer\"><code>EmbeddedChartBuilder<\/code><\/a>\u00a0classes.\u00a0Para criar um gr\u00e1fico, seu c\u00f3digo primeiro cria um objeto construtor de gr\u00e1fico integrado, usa seus m\u00e9todos para definir as configura\u00e7\u00f5es do gr\u00e1fico e, em seguida, chama um\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-chart-builder#build\" target=\"_blank\" rel=\"noopener noreferrer\"><code>build()<\/code><\/a>\u00a0m\u00e9todo para criar o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-chart\" target=\"_blank\" rel=\"noopener noreferrer\"><code>EmbeddedChart<\/code><\/a>\u00a0objeto\u00a0final\u00a0.\u00a0Seu c\u00f3digo nunca modifica o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-chart\" target=\"_blank\" rel=\"noopener noreferrer\"><code>EmbeddedChart<\/code><\/a>\u00a0objeto diretamente;\u00a0toda a configura\u00e7\u00e3o do gr\u00e1fico \u00e9 feita por meio das classes construtoras.<\/p>\n<p>O\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code>\u00a0servi\u00e7o<\/a>\u00a0fornece uma\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-chart-builder\" target=\"_blank\" rel=\"noopener noreferrer\"><code>EmbeddedChartBuilder<\/code><\/a>\u00a0classe\u00a0pai\u00a0e v\u00e1rias classes de construtor filho (como\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-line-chart-builder\" target=\"_blank\" rel=\"noopener noreferrer\"><code>EmbeddedLineChartBuilder<\/code><\/a>) que herdam dela.\u00a0As classes filhas permitem que o Apps Script forne\u00e7a os m\u00e9todos de configura\u00e7\u00e3o de\u00a0gr\u00e1ficos\u00a0de construtores que s\u00e3o aplic\u00e1veis \u200b\u200bapenas a determinados tipos de\u00a0gr\u00e1ficos.\u00a0Por exemplo, a\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-pie-chart-builder\" target=\"_blank\" rel=\"noopener noreferrer\"><code>EmbeddedPieChartBuilder<\/code><\/a>\u00a0classe fornece um\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-pie-chart-builder#set3d\" target=\"_blank\" rel=\"noopener noreferrer\"><code>set3D()<\/code><\/a>\u00a0m\u00e9todo que s\u00f3 faz sentido para\u00a0gr\u00e1ficos\u00a0de pizza.<\/p>\n<p>Em seu c\u00f3digo, esta linha est\u00e1 criando uma vari\u00e1vel de objeto builder\u00a0<code>lineChartBuilder<\/code>:<\/p>\n<p><code>var lineChartBuilder = sheet.newChart().asLineChart();<\/code><\/p>\n<p>O c\u00f3digo chama o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet#newchart\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Sheet.newChart()<\/code><\/a>\u00a0m\u00e9todo para criar um novo\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-chart-builder\" target=\"_blank\" rel=\"noopener noreferrer\"><code>EmbeddedChartBuilder<\/code><\/a>\u00a0objeto e, em seguida, usa\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-chart-builder#aslinechart\" target=\"_blank\" rel=\"noopener noreferrer\"><code>EmbeddedChartBuilder.asLineChart()<\/code><\/a>\u00a0para definir o tipo de construtor como\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-line-chart-builder\" target=\"_blank\" rel=\"noopener noreferrer\"><code>EmbeddedLineChartBuilder<\/code><\/a>.<\/p>\n<p>O c\u00f3digo ent\u00e3o cria o gr\u00e1fico usando lineChartBuilder.\u00a0Esta parte do c\u00f3digo \u00e9 apenas uma s\u00e9rie de chamadas de m\u00e9todo que definem as configura\u00e7\u00f5es do gr\u00e1fico, seguidas por uma\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-chart-builder#build\" target=\"_blank\" rel=\"noopener noreferrer\"><code>build()<\/code><\/a>\u00a0chamada para criar o gr\u00e1fico.\u00a0Como voc\u00ea viu em codelabs anteriores, o c\u00f3digo faz uso do\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Method_chaining\" target=\"_blank\" rel=\"noopener noreferrer\">encadeamento<\/a>\u00a0de\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Method_chaining\" target=\"_blank\" rel=\"noopener noreferrer\">m\u00e9todos<\/a>\u00a0para manter o c\u00f3digo leg\u00edvel por humanos.\u00a0Aqui est\u00e1 o que as chamadas de m\u00e9todo est\u00e3o fazendo:<\/p>\n<ul>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-line-chart-builder#addrangerange\" target=\"_blank\" rel=\"noopener noreferrer\"><code>addRange(range)<\/code><\/a>: Define um intervalo de dados que o gr\u00e1fico exibir\u00e1.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-line-chart-builder#setpositionanchorrowpos,-anchorcolpos,-offsetx,-offsety\" target=\"_blank\" rel=\"noopener noreferrer\"><code>setPosition(anchorRowPos, anchorColPos, offsetX, offsetY)<\/code><\/a>: Determina onde o gr\u00e1fico \u00e9 colocado na folha.\u00a0Aqui, o c\u00f3digo est\u00e1 colocando o canto superior esquerdo do gr\u00e1fico na c\u00e9lula H5.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-line-chart-builder#settitlecharttitle\" target=\"_blank\" rel=\"noopener noreferrer\"><code>setTitle(title)<\/code><\/a>: Define o t\u00edtulo do gr\u00e1fico.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-line-chart-builder#setnumheadersheaders\" target=\"_blank\" rel=\"noopener noreferrer\"><code>setNumHeaders<\/code><code>(headers)<\/code><\/a>: Determine quantas linhas ou colunas no intervalo de dados devem ser tratadas como cabe\u00e7alhos.\u00a0Aqui, o c\u00f3digo diz para usar a primeira linha no intervalo de dados como cabe\u00e7alhos, o que significa que o texto nessa linha ser\u00e1 usado como r\u00f3tulos para as s\u00e9ries de dados individuais no gr\u00e1fico.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-line-chart-builder#setlegendpositionposition\" target=\"_blank\" rel=\"noopener noreferrer\"><code>setLegendPosition(position)<\/code><\/a>: Move a legenda do gr\u00e1fico para o lado direito do gr\u00e1fico.\u00a0Este m\u00e9todo usa o\u00a0enum\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/charts\/position\" target=\"_blank\" rel=\"noopener noreferrer\">Charts.Position<\/a>\u00a0como par\u00e2metro.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-line-chart-builder#setoptionoption,-value\" target=\"_blank\" rel=\"noopener noreferrer\"><code>setOption(option, value)<\/code><\/a>: Define op\u00e7\u00f5es de gr\u00e1fico complexas.\u00a0Aqui, o c\u00f3digo define a\u00a0<code>hAxis<\/code>\u00a0op\u00e7\u00e3o para o\u00a0<code>hAxisOptions<\/code>\u00a0objeto.\u00a0Existem muitas op\u00e7\u00f5es que voc\u00ea pode definir usando este m\u00e9todo, mas voc\u00ea precisa saber as op\u00e7\u00f5es e os valores poss\u00edveis para cada tipo de gr\u00e1fico.\u00a0Tudo isso est\u00e1 documentado na Charts API Charts Gallery.\u00a0Por exemplo, as op\u00e7\u00f5es que voc\u00ea pode definir para\u00a0gr\u00e1ficos\u00a0de linha est\u00e3o documentadas em\u00a0<a href=\"https:\/\/developers.google.com\/chart\/interactive\/docs\/gallery\/linechart#configuration-options\" target=\"_blank\" rel=\"noopener noreferrer\">Op\u00e7\u00f5es de configura\u00e7\u00e3o do gr\u00e1fico de linha<\/a>\u00a0.\u00a0Usar\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-line-chart-builder#setoptionoption,-value\" target=\"_blank\" rel=\"noopener noreferrer\"><code>setOption(option, value)<\/code><\/a>\u00a0m\u00e9todos \u00e9 um uso avan\u00e7ado do Apps Script, portanto, conv\u00e9m evitar us\u00e1-los at\u00e9 se sentir mais familiarizado com a cria\u00e7\u00e3o de\u00a0gr\u00e1ficos\u00a0no Apps Script.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-chart-builder#build\" target=\"_blank\" rel=\"noopener noreferrer\"><code>build()<\/code><\/a>: Cria e retorna um\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-chart\" target=\"_blank\" rel=\"noopener noreferrer\"><code>EmbeddedChart<\/code><\/a>\u00a0objeto usando as configura\u00e7\u00f5es acima.<\/li>\n<\/ul>\n<p>Finalmente, o c\u00f3digo chama\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet#insertchartchart\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Sheet.insertChart(chart)<\/code><\/a>\u00a0para colocar o gr\u00e1fico constru\u00eddo na planilha ativa.<\/p>\n<p>&nbsp;<\/p>\n<h4>Resultados<\/h4>\n<p>Voc\u00ea pode ver sua fun\u00e7\u00e3o de\u00a0formata\u00e7\u00e3o\u00a0em a\u00e7\u00e3o fazendo o seguinte:<\/p>\n<ol start=\"1\" type=\"1\">\n<li>Salve seu projeto de script no editor do Apps Script, caso ainda n\u00e3o tenha feito isso.<\/li>\n<li>Clique no\u00a0item de menu\u00a0Conjunto de dados presente&gt; Gr\u00e1fico &#8220;Datas e taxas de c\u00e2mbio do USD&#8221;\u00a0.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<aside class=\"warning\">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.\u00a0Nesses casos, continue autorizando o script fazendo o seguinte:<\/p>\n<ol start=\"1\" type=\"1\">\n<li>Na caixa de di\u00e1logo &#8220;Este aplicativo n\u00e3o foi verificado&#8221;, clique em\u00a0Avan\u00e7ado\u00a0.<\/li>\n<li>Clique em\u00a0Ir para datas e taxas de c\u00e2mbio do d\u00f3lar americano (inseguro).<\/li>\n<li>Na pr\u00f3xima tela, clique em\u00a0Permitir\u00a0.<\/li>\n<\/ol>\n<p>Ao longo deste codelab, voc\u00ea ver\u00e1 um ou mais prompts de permiss\u00e3o.\u00a0Siga as instru\u00e7\u00f5es na tela para continuar autorizando o c\u00f3digo.\u00a0Voc\u00ea pode ler mais sobre esse processo no\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/guides\/services\/authorization\" target=\"_blank\" rel=\"noopener noreferrer\">guia de autoriza\u00e7\u00e3o<\/a>\u00a0do\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/guides\/services\/authorization\" target=\"_blank\" rel=\"noopener noreferrer\">Apps Script<\/a>\u00a0.<\/p>\n<\/aside>\n<p>&nbsp;<\/p>\n<p>Seu script agora coloca um novo gr\u00e1fico \u00e0 direita de seus dados!<\/p>\n<p class=\"image-container\"><img src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-5\/img\/bbf856699b6d2b45.gif\" \/><\/p>\n<p>Parab\u00e9ns!\u00a0Voc\u00ea construiu um gr\u00e1fico de linha incorporado com o Apps Script.\u00a0A pr\u00f3xima se\u00e7\u00e3o ensina como exportar seu gr\u00e1fico para o Slides!<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h3 class=\"step-title\">Exporte seus\u00a0gr\u00e1ficos\u00a0para slides<\/h3>\n<p>Um dos grandes pontos fortes do Apps Script \u00e9 que ele permite que voc\u00ea mova dados facilmente de um aplicativo do G Suite para outro.\u00a0A maioria dos aplicativos do G Suite tem um servi\u00e7o Apps Script dedicado, semelhante ao\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/\" target=\"_blank\" rel=\"noopener noreferrer\">servi\u00e7o\u00a0<\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/\" target=\"_blank\" rel=\"noopener noreferrer\">Spreadsheet<\/a>\u00a0: por exemplo, o Gmail tem o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/gmail\" target=\"_blank\" rel=\"noopener noreferrer\">servi\u00e7o\u00a0<\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/gmail\" target=\"_blank\" rel=\"noopener noreferrer\">Gmail<\/a>\u00a0, o Google Docs tem o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/document\" target=\"_blank\" rel=\"noopener noreferrer\">servi\u00e7o Document<\/a>\u00a0e o Google Slides tem o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\" target=\"_blank\" rel=\"noopener noreferrer\">servi\u00e7o\u00a0<\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\" target=\"_blank\" rel=\"noopener noreferrer\">Slides<\/a>\u00a0.\u00a0Com todos esses servi\u00e7os integrados, voc\u00ea pode extrair rapidamente os dados de um aplicativo, process\u00e1-los e gravar o resultado em outro.<\/p>\n<p>Nesta se\u00e7\u00e3o, voc\u00ea ver\u00e1 como exportar todos os\u00a0gr\u00e1ficos\u00a0incorporados em uma planilha do Google para uma nova apresenta\u00e7\u00e3o do Google Slides.\u00a0Voc\u00ea tamb\u00e9m ver\u00e1 duas maneiras de mostrar as mensagens personalizadas do usu\u00e1rio no Planilhas!<\/p>\n<p>&nbsp;<\/p>\n<aside class=\"special\">\u00a0 \u00a0 Nota:\u00a0Entre outras coisas, usando o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\" target=\"_blank\" rel=\"noopener noreferrer\">servi\u00e7o de<\/a>\u00a0seus scripts podem criar novos\u00a0objetos, preench\u00ea-los com\u00a0e\u00a0, em seguida, adicionar\u00a0como\u00a0,\u00a0, e\u00a0.\u00a0O\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\" target=\"_blank\" rel=\"noopener noreferrer\">servi\u00e7o<\/a>\u00a0\u00e9 quase t\u00e3o grande quanto o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\">servi\u00e7o<\/a>\u00a0!<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Slides<\/code><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/presentation\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Presentation<\/code><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/slide\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Slides<\/code><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/layout\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Layouts<\/code><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/page-element\" target=\"_blank\" rel=\"noopener noreferrer\"><code>PageElements<\/code><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/shape\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Shapes<\/code><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/text-range\" target=\"_blank\" rel=\"noopener noreferrer\"><code>TextRanges<\/code><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/line\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Lines<\/code><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Slides<\/code><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code><\/a>Apps Script pode fazer muito com o Apresenta\u00e7\u00f5es, mas para este codelab tudo o que voc\u00ea far\u00e1 \u00e9 criar uma nova apresenta\u00e7\u00e3o, criar novos slides e importar\u00a0gr\u00e1ficos\u00a0para slides.\u00a0Se voc\u00ea quiser saber mais, consulte a\u00a0documenta\u00e7\u00e3o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/guides\/slides\" target=\"_blank\" rel=\"noopener noreferrer\">Estendendo o Apresenta\u00e7\u00f5es Google<\/a>\u00a0.\u00a0<\/aside>\n<p>&nbsp;<\/p>\n<h4>Implementa\u00e7\u00e3o<\/h4>\n<p>Aqui, voc\u00ea implementar\u00e1 a fun\u00e7\u00e3o chamada pelo\u00a0item de menu\u00a0Apresentar conjunto de dados&gt; Exportar\u00a0gr\u00e1ficos\u00a0para slides\u00a0.\u00a0Execute as seguintes etapas:<\/p>\n<ol start=\"1\" type=\"1\">\n<li>No editor do Apps Script, adicione a seguinte fun\u00e7\u00e3o ao final do script do seu projeto de\u00a0<code>Code.gs<\/code>\u00a0script, ap\u00f3s a\u00a0<code>createEmbeddedLineChart()<\/code>\u00a0fun\u00e7\u00e3o:<\/li>\n<\/ol>\n<pre><code><span class=\"com\">\/**\r\n * Creates a new Slides presentation and exports\r\n * all the embedded charts in this spreadsheet\r\n * to it, one chart per slide.\r\n *\/<\/span>\r\n<span class=\"kwd\">function<\/span><span class=\"pln\"> exportChartsToSlides<\/span><span class=\"pun\">()<\/span> <span class=\"pun\">{<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> ss <\/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  \r\n  <span class=\"com\">\/\/ Fetch a list of all embedded charts in this<\/span>\r\n  <span class=\"com\">\/\/ spreadsheet.<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> charts <\/span><span class=\"pun\">=<\/span> <span class=\"pun\">[];<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> sheets <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> ss<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getSheets<\/span><span class=\"pun\">();<\/span>\r\n  <span class=\"kwd\">for<\/span> <span class=\"pun\">(<\/span><span class=\"kwd\">var<\/span><span class=\"pln\"> i <\/span><span class=\"pun\">=<\/span> <span class=\"lit\">0<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> i <\/span><span class=\"pun\">&lt;<\/span><span class=\"pln\"> sheets<\/span><span class=\"pun\">.<\/span><span class=\"pln\">length<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> i<\/span><span class=\"pun\">++)<\/span> <span class=\"pun\">{<\/span><span class=\"pln\">\r\n    charts <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> charts<\/span><span class=\"pun\">.<\/span><span class=\"pln\">concat<\/span><span class=\"pun\">(<\/span><span class=\"pln\">sheets<\/span><span class=\"pun\">[<\/span><span class=\"pln\">i<\/span><span class=\"pun\">].<\/span><span class=\"pln\">getCharts<\/span><span class=\"pun\">());<\/span>\r\n  <span class=\"pun\">}<\/span>\r\n  \r\n  <span class=\"com\">\/\/ If there aren't any charts, display a toast<\/span>\r\n  <span class=\"com\">\/\/ message and return without doing anything<\/span>\r\n  <span class=\"com\">\/\/ else.<\/span>\r\n  <span class=\"kwd\">if<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">charts<\/span><span class=\"pun\">.<\/span><span class=\"pln\">length <\/span><span class=\"pun\">==<\/span> <span class=\"lit\">0<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">{<\/span><span class=\"pln\">\r\n    ss<\/span><span class=\"pun\">.<\/span><span class=\"pln\">toast<\/span><span class=\"pun\">(<\/span><span class=\"str\">'No charts to export!'<\/span><span class=\"pun\">);<\/span>\r\n    <span class=\"kwd\">return<\/span><span class=\"pun\">;<\/span>\r\n  <span class=\"pun\">}<\/span>\r\n  \r\n  <span class=\"com\">\/\/ Create a new Slides presentation, removing the default<\/span>\r\n  <span class=\"com\">\/\/ title slide.<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> presentationTitle <\/span><span class=\"pun\">=<\/span><span class=\"pln\">\r\n    ss<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getName<\/span><span class=\"pun\">()<\/span> <span class=\"pun\">+<\/span> <span class=\"str\">\" Presentation\"<\/span><span class=\"pun\">;<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> slides <\/span><span class=\"pun\">=<\/span> <span class=\"typ\">SlidesApp<\/span><span class=\"pun\">.<\/span><span class=\"pln\">create<\/span><span class=\"pun\">(<\/span><span class=\"pln\">presentationTitle<\/span><span class=\"pun\">);<\/span><span class=\"pln\">\r\n  slides<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getSlides<\/span><span class=\"pun\">()[<\/span><span class=\"lit\">0<\/span><span class=\"pun\">].<\/span><span class=\"pln\">remove<\/span><span class=\"pun\">();<\/span>  \r\n  \r\n  <span class=\"com\">\/\/ Add charts to the presentation, one chart per slide.<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> position <\/span><span class=\"pun\">=<\/span> <span class=\"pun\">{<\/span><span class=\"pln\">left<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">40<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> top<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">30<\/span><span class=\"pun\">};<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> size <\/span><span class=\"pun\">=<\/span> <span class=\"pun\">{<\/span><span class=\"pln\">height<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">340<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> width<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">430<\/span><span class=\"pun\">};<\/span>\r\n  <span class=\"kwd\">for<\/span> <span class=\"pun\">(<\/span><span class=\"kwd\">var<\/span><span class=\"pln\"> i <\/span><span class=\"pun\">=<\/span> <span class=\"lit\">0<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> i <\/span><span class=\"pun\">&lt;<\/span><span class=\"pln\"> charts<\/span><span class=\"pun\">.<\/span><span class=\"pln\">length<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> i<\/span><span class=\"pun\">++)<\/span> <span class=\"pun\">{<\/span>\r\n    <span class=\"kwd\">var<\/span><span class=\"pln\"> newSlide <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> slides<\/span><span class=\"pun\">.<\/span><span class=\"pln\">appendSlide<\/span><span class=\"pun\">();<\/span><span class=\"pln\">\r\n    newSlide<\/span><span class=\"pun\">.<\/span><span class=\"pln\">insertSheetsChart<\/span><span class=\"pun\">(<\/span><span class=\"pln\">\r\n      charts<\/span><span class=\"pun\">[<\/span><span class=\"pln\">i<\/span><span class=\"pun\">],<\/span><span class=\"pln\">\r\n      position<\/span><span class=\"pun\">.<\/span><span class=\"pln\">left<\/span><span class=\"pun\">,<\/span><span class=\"pln\">\r\n      position<\/span><span class=\"pun\">.<\/span><span class=\"pln\">top<\/span><span class=\"pun\">,<\/span><span class=\"pln\">\r\n      size<\/span><span class=\"pun\">.<\/span><span class=\"pln\">width<\/span><span class=\"pun\">,<\/span><span class=\"pln\">\r\n      size<\/span><span class=\"pun\">.<\/span><span class=\"pln\">height<\/span><span class=\"pun\">);<\/span>   \r\n  <span class=\"pun\">}<\/span>\r\n  \r\n  <span class=\"com\">\/\/ Create and display a dialog that tells the user where to<\/span>\r\n  <span class=\"com\">\/\/ find the new presentation.<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> slidesUrl <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> slides<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getUrl<\/span><span class=\"pun\">();<\/span>\r\n  <span class=\"kwd\">var<\/span><span class=\"pln\"> html <\/span><span class=\"pun\">=<\/span> <span class=\"str\">\"&lt;p&gt;Find it in your home Drive folder:&lt;\/p&gt;\"<\/span>\r\n      <span class=\"pun\">+<\/span> <span class=\"str\">\"&lt;p&gt;&lt;a href=\\\"\"<\/span> <span class=\"pun\">+<\/span><span class=\"pln\"> slidesUrl <\/span><span class=\"pun\">+<\/span> <span class=\"str\">\"\\\" target=\\\"_blank\\\"&gt;\"<\/span>\r\n      <span class=\"pun\">+<\/span><span class=\"pln\"> presentationTitle <\/span><span class=\"pun\">+<\/span> <span class=\"str\">\"&lt;\/a&gt;&lt;\/p&gt;\"<\/span><span class=\"pun\">;<\/span>\r\n  \r\n  <span class=\"typ\">SpreadsheetApp<\/span><span class=\"pun\">.<\/span><span class=\"pln\">getUi<\/span><span class=\"pun\">().<\/span><span class=\"pln\">showModalDialog<\/span><span class=\"pun\">(<\/span>\r\n    <span class=\"typ\">HtmlService<\/span><span class=\"pun\">.<\/span><span class=\"pln\">createHtmlOutput<\/span><span class=\"pun\">(<\/span><span class=\"pln\">html<\/span><span class=\"pun\">)<\/span>\r\n      <span class=\"pun\">.<\/span><span class=\"pln\">setHeight<\/span><span class=\"pun\">(<\/span><span class=\"lit\">120<\/span><span class=\"pun\">)<\/span>\r\n      <span class=\"pun\">.<\/span><span class=\"pln\">setWidth<\/span><span class=\"pun\">(<\/span><span class=\"lit\">350<\/span><span class=\"pun\">),<\/span>\r\n      <span class=\"str\">\"Created a presentation!\"<\/span>\r\n  <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<\/ol>\n<p>&nbsp;<\/p>\n<h4>Revis\u00e3o de c\u00f3digo<\/h4>\n<p>Este c\u00f3digo pode ser mais curto do que voc\u00ea esperava!\u00a0Vamos revisar o que est\u00e1 fazendo dividindo o c\u00f3digo em se\u00e7\u00f5es:<\/p>\n<p>&nbsp;<\/p>\n<h5>1: Obtenha os\u00a0gr\u00e1ficos<\/h5>\n<p>As primeiras linhas pesquisam a planilha ativa para encontrar todos os\u00a0gr\u00e1ficos\u00a0incorporados, reunindo-os no array\u00a0<code>charts<\/code>.\u00a0Essas linhas usam o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet#getsheets\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet.getSheets()<\/code><\/a>m\u00e9todo e o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/sheet#getcharts\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Sheet.getCharts()<\/code><\/a>m\u00e9todo para obter listas de planilhas e\u00a0gr\u00e1ficos.\u00a0O\u00a0<a href=\"https:\/\/www.w3schools.com\/jsref\/jsref_concat_array.asp\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Array.concat()<\/code><\/a>m\u00e9todo\u00a0JavaScript\u00a0\u00e9 usado para anexar a lista de\u00a0gr\u00e1ficos\u00a0de cada folha ao\u00a0<code>charts<\/code>.<\/p>\n<p>&nbsp;<\/p>\n<h5>2: Verifique se h\u00e1\u00a0gr\u00e1ficos\u00a0para exportar<\/h5>\n<p>O c\u00f3digo ent\u00e3o verifica se h\u00e1 realmente algum gr\u00e1fico para exportar.\u00a0Queremos evitar fazer uma apresenta\u00e7\u00e3o em branco; portanto, se n\u00e3o houver\u00a0gr\u00e1ficos, o c\u00f3digo em vez disso cria uma\u00a0<em>mensagem brinde<\/em>\u00a0usando\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet#toastmsg\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet.toast(message)<\/code><\/a>.\u00a0Esta \u00e9 uma pequena caixa de di\u00e1logo &#8220;espiada&#8221; que aparece no canto inferior direito do Planilhas, permanece por alguns segundos e depois desaparece:<\/p>\n<p class=\"image-container\"><img src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-5\/img\/db7e87dcb8010bef.gif\" \/><\/p>\n<p>&nbsp;<\/p>\n<aside class=\"special\">\u00a0 \u00a0 Ponto principal: as\u00a0mensagens de brinde s\u00e3o \u00f3timas para mostrar ao usu\u00e1rio que algo aconteceu, mas que n\u00e3o \u00e9 algo a que ele precisa reagir.\u00a0Nesse caso, a mensagem do sistema informa ao usu\u00e1rio que a a\u00e7\u00e3o do menu foi conclu\u00edda com \u00eaxito, mas n\u00e3o produziu nada porque n\u00e3o havia\u00a0gr\u00e1ficos\u00a0para exportar.Se o c\u00f3digo\u00a0<em>n\u00e3o<\/em>\u00a0criou essa mensagem do sistema, pareceria que o item de menu n\u00e3o estava fazendo nada e o usu\u00e1rio poderia pensar que o script estava quebrado.\u00a0\u00c9 sempre uma pr\u00e1tica recomendada manter seus usu\u00e1rios informados sobre o que seus scripts est\u00e3o fazendo, mesmo quando os scripts encontram condi\u00e7\u00f5es de erro.<\/aside>\n<p>&nbsp;<\/p>\n<p>Se n\u00e3o houver\u00a0gr\u00e1ficos\u00a0para exportar, o c\u00f3digo cria a mensagem do sistema e sai sem fazer mais nada.\u00a0Se houver\u00a0gr\u00e1ficos\u00a0para exportar, o c\u00f3digo continuar\u00e1 a criar uma apresenta\u00e7\u00e3o nas pr\u00f3ximas linhas.<\/p>\n<p>&nbsp;<\/p>\n<h5>3: Crie uma apresenta\u00e7\u00e3o<\/h5>\n<p>A vari\u00e1vel\u00a0<code>presentationTitle<\/code>\u00a0\u00e9 criada como o nome do arquivo da nova apresenta\u00e7\u00e3o.\u00a0Ele \u00e9 definido como o nome da planilha, com &#8221;\u00a0<code>Presentation<\/code>&#8221; concatenado no final.\u00a0O c\u00f3digo ent\u00e3o chama o\u00a0m\u00e9todo de\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\" target=\"_blank\" rel=\"noopener noreferrer\">servi\u00e7o\u00a0<\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\" target=\"_blank\" rel=\"noopener noreferrer\">Slides<\/a>\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/slides-app#createname\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SlidesApp.create(name)<\/code><\/a>\u00a0para criar uma nova apresenta\u00e7\u00e3o.<\/p>\n<p>&nbsp;<\/p>\n<aside class=\"special\">\u00a0 \u00a0 Observa\u00e7\u00e3o:\u00a0a\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/slides-app\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SlidesApp<\/code><\/a>\u00a0classe atua como a classe pai para o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\" target=\"_blank\" rel=\"noopener noreferrer\">servi\u00e7o<\/a>\u00a0, assim como\u00a0\u00e9 a classe pai para o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\">servi\u00e7o<\/a>\u00a0.<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Slides<\/code><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet-app\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SpreadsheetApp<\/code><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Spreadsheet<\/code><\/a><\/aside>\n<p>&nbsp;<\/p>\n<p>Novas apresenta\u00e7\u00f5es s\u00e3o criadas com um \u00fanico slide em branco.\u00a0N\u00e3o queremos isso em nossa apresenta\u00e7\u00e3o, ent\u00e3o o cod remove com\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/presentation#getslides\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Presentation.getSlides()<\/code><\/a>\u00a0e\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/slide#remove\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Slide.remove()<\/code><\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h5>4: Exportar os\u00a0gr\u00e1ficos<\/h5>\n<p>Na pr\u00f3xima se\u00e7\u00e3o, o c\u00f3digo define os objetos JavaScript\u00a0<code>position<\/code>\u00a0e\u00a0<code>size<\/code>\u00a0descreve onde os\u00a0gr\u00e1ficos\u00a0importados ser\u00e3o colocados no slide e o tamanho do gr\u00e1fico (em pixels).<\/p>\n<p>&nbsp;<\/p>\n<aside class=\"special\">\u00a0 \u00a0 Nota:\u00a0Na p\u00e1gina de slides, os elementos como\u00a0gr\u00e1ficos\u00a0importados, caixas de texto e formas precisam ter posi\u00e7\u00f5es e tamanhos especificados.\u00a0Voc\u00ea pode aprender mais sobre como o Apps Script define esses valores no\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/guides\/slides\/moving-elements\" target=\"_blank\" rel=\"noopener noreferrer\">guia de elementos de dimensionamento e posicionamento da p\u00e1gina<\/a>\u00a0.<\/aside>\n<p>&nbsp;<\/p>\n<p>O c\u00f3digo faz um loop em cada gr\u00e1fico na lista de\u00a0gr\u00e1ficos.\u00a0Para cada gr\u00e1fico,\u00a0<code>newSlide<\/code>\u00a0\u00e9 criado um\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/presentation#appendslide\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Presentation.appendSlide()<\/code><\/a>, adicionando esse slide ao final da apresenta\u00e7\u00e3o.\u00a0O\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/slide#insertsheetschartsourcechart,-left,-top,-width,-height\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Slide.insertSheetsChart(sourceChart, left, top, width, height)<\/code><\/a>\u00a0m\u00e9todo \u00e9 ent\u00e3o usado para importar o gr\u00e1fico para o slide com o\u00a0<code>size<\/code>\u00a0e\u00a0<code>position<\/code>.<\/p>\n<p>&nbsp;<\/p>\n<h5>5: Diga ao usu\u00e1rio onde est\u00e1 a apresenta\u00e7\u00e3o<\/h5>\n<p>Por fim, o c\u00f3digo precisa permitir que o usu\u00e1rio saiba onde est\u00e1 a nova apresenta\u00e7\u00e3o, de prefer\u00eancia com um link no qual ele possa clicar para abri-la.\u00a0Para fazer isso, o c\u00f3digo usa o Apps Script\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/html\" target=\"_blank\" rel=\"noopener noreferrer\"><code>HtmlService<\/code><\/a>\u00a0para criar uma\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/guides\/dialogs#custom_dialogs\" target=\"_blank\" rel=\"noopener noreferrer\"><em>caixa de di\u00e1logo modal<\/em><\/a><a href=\"https:\/\/developers.google.com\/apps-script\/guides\/dialogs#custom_dialogs\" target=\"_blank\" rel=\"noopener noreferrer\">\u00a0personalizada<\/a>\u00a0.\u00a0As caixas de di\u00e1logo modais (tamb\u00e9m conhecidas como\u00a0<em>caixas de di\u00e1logo personalizadas<\/em>\u00a0no Apps Script) s\u00e3o janelas que aparecem na interface do Planilhas;\u00a0enquanto eles est\u00e3o presentes, o usu\u00e1rio \u00e9 impedido de interagir com o Planilhas.<\/p>\n<p>&nbsp;<\/p>\n<aside class=\"special\">\u00a0 \u00a0 Ponto principal: as\u00a0caixas de di\u00e1logo modais s\u00e3o \u00f3timas para quando seu script precisa de uma entrada espec\u00edfica do usu\u00e1rio para prosseguir ou quando voc\u00ea deseja garantir que o usu\u00e1rio seja for\u00e7ado a ver algo antes de continuar trabalhando no Planilhas Google.O Apps Script\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/html\" target=\"_blank\" rel=\"noopener noreferrer\"><code>HtmlService<\/code><\/a>\u00a0permite que voc\u00ea controle completamente a apar\u00eancia e o conte\u00fado da caixa de di\u00e1logo personalizada com HTML e JavaScript padr\u00e3o.\u00a0Isso significa que voc\u00ea pode adicionar texto, bot\u00f5es, imagens e outras interatividade ao di\u00e1logo.\u00a0Esses t\u00f3picos est\u00e3o fora do escopo deste codelab, mas se quiser saber mais, voc\u00ea pode ler os\u00a0guias\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/guides\/html\" target=\"_blank\" rel=\"noopener noreferrer\">Criar e servir HTML<\/a>\u00a0e\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/guides\/html\/communication\" target=\"_blank\" rel=\"noopener noreferrer\">Comunica\u00e7\u00e3o cliente-servidor<\/a>\u00a0.<\/aside>\n<p>&nbsp;<\/p>\n<p>Para criar uma caixa de di\u00e1logo personalizada, o c\u00f3digo precisa do HTML que define seu conte\u00fado.\u00a0Isso \u00e9 fornecido na\u00a0<code>html<\/code>\u00a0vari\u00e1vel.\u00a0O conte\u00fado consiste em um texto de par\u00e1grafo curto e um hiperlink.\u00a0O hiperlink \u00e9 o\u00a0<code>presentationTitle<\/code>, vinculado ao URL da apresenta\u00e7\u00e3o fornecido por\u00a0<code>Presentation.getUrl()<\/code>.\u00a0O hiperlink tamb\u00e9m usa o\u00a0<code>target=\"_blank\"<\/code>\u00a0atributo para que a apresenta\u00e7\u00e3o seja aberta em uma nova guia do navegador, em vez de na pr\u00f3pria caixa de di\u00e1logo.<\/p>\n<p>O HTML \u00e9 analisado em um\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/html\/html-output\" target=\"_blank\" rel=\"noopener noreferrer\"><code>HtmlOutput<\/code><\/a>\u00a0objeto pelo\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/html\/html-service#createhtmloutputhtml\" target=\"_blank\" rel=\"noopener noreferrer\"><code>HtmlService.createHtmlOutput(html)<\/code><\/a>\u00a0m\u00e9todo.\u00a0O\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/html\/html-output\" target=\"_blank\" rel=\"noopener noreferrer\"><code>HtmlOutput<\/code><\/a>\u00a0objeto permite que o c\u00f3digo defina o tamanho da caixa de di\u00e1logo personalizada com\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/html\/html-output#setheightheight\" target=\"_blank\" rel=\"noopener noreferrer\"><code>HtmlOutput.setHeight(height)<\/code><\/a>\u00a0e\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/html\/html-output#setwidthwidth\" target=\"_blank\" rel=\"noopener noreferrer\"><code>HtmlOutput.setWidth(width)<\/code><\/a>.<\/p>\n<p>Depois de\u00a0<code>htmlOutput<\/code>\u00a0criado, o c\u00f3digo usa o\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/base\/ui#showmodaldialoguserinterface,-title\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Ui.showModalDialog(htmlOutput, title)<\/code><\/a>\u00a0m\u00e9todo para exibir a caixa de di\u00e1logo com o t\u00edtulo fornecido.<\/p>\n<p>&nbsp;<\/p>\n<h4>Resultados<\/h4>\n<p>Agora que implementou o segundo item de menu, voc\u00ea pode v\u00ea-lo em a\u00e7\u00e3o!\u00a0Fa\u00e7a o seguinte para testar a\u00a0<code>exportChartsToSlides()<\/code>fun\u00e7\u00e3o:<\/p>\n<ol start=\"1\" type=\"1\">\n<li>Se ainda n\u00e3o o fez, abra sua planilha e selecione o\u00a0item de menu\u00a0Conjunto de dados atual&gt; Gr\u00e1fico &#8220;Conjunto de dados de datas e taxas de c\u00e2mbio do d\u00f3lar americano&#8221;\u00a0para criar um gr\u00e1fico para exportar.\u00a0Ele aparecer\u00e1 ancorado na c\u00e9lula H5 na planilha ativa.<\/li>\n<li>Selecione o item de menu\u00a0Apresentar conjunto de dados&gt; Exportar\u00a0gr\u00e1ficos\u00a0para slides\u00a0.\u00a0Voc\u00ea pode ser solicitado a reautorizar o script.<\/li>\n<li>Voc\u00ea deve ver seu script processar a solicita\u00e7\u00e3o e, em seguida, exibir a caixa de di\u00e1logo personalizada.\u00a0Clique no\u00a0link\u00a0Apresenta\u00e7\u00e3o de Datas e Taxas de C\u00e2mbio do USD\u00a0para abrir a nova apresenta\u00e7\u00e3o:<\/li>\n<\/ol>\n<p class=\"image-container\"><img src=\"https:\/\/codelabs.developers.google.com\/codelabs\/apps-script-fundamentals-5\/img\/51326ceaeb3e49b2.gif\" width=\"845\" height=\"507\" \/><\/p>\n<p>\u00a0 \u00a0 Se desejar, voc\u00ea tamb\u00e9m pode adicionar mais\u00a0gr\u00e1ficos\u00a0\u00e0 planilha e selecionar novamente o item de menu para criar uma nova apresenta\u00e7\u00e3o com v\u00e1rios slides.<\/p>\n<p>&nbsp;<\/p>\n<aside class=\"special\">\u00a0 \u00a0 Observa\u00e7\u00e3o:\u00a0os\u00a0gr\u00e1ficos\u00a0que aparecem na apresenta\u00e7\u00e3o s\u00e3o\u00a0<em>gr\u00e1ficos\u00a0vinculados<\/em>\u00a0.\u00a0Isso significa que eles ainda est\u00e3o conectados ao gr\u00e1fico original no Planilhas.\u00a0Se fizer uma edi\u00e7\u00e3o no gr\u00e1fico do Planilhas original, depois de alguns instantes, voc\u00ea poder\u00e1 atualizar o gr\u00e1fico vinculado no Apresenta\u00e7\u00f5es por meio de um\u00a0bot\u00e3o\u00a0Atualizar\u00a0no gr\u00e1fico.\u00a0Voc\u00ea tamb\u00e9m pode for\u00e7ar uma atualiza\u00e7\u00e3o usando o\u00a0m\u00e9todo de\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\" target=\"_blank\" rel=\"noopener noreferrer\">servi\u00e7o<\/a>\u00a0.<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Slides<\/code><\/a>\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/sheets-chart#refresh\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SheetCharts.refresh()<\/code><\/a><\/aside>\n<p>&nbsp;<\/p>\n<p>Agora voc\u00ea pode exportar\u00a0gr\u00e1ficos\u00a0criados no Planilhas para uma apresenta\u00e7\u00e3o do Google Slides!\u00a0Voc\u00ea tamb\u00e9m pode escrever c\u00f3digo para criar um di\u00e1logo personalizado!<\/p>\n<p>&nbsp;<\/p>\n<h4>O que voc\u00ea aprendeu?<\/h4>\n<ul>\n<li>Como construir um gr\u00e1fico de linha incorporado com o Apps Script.<\/li>\n<li>Como exportar um gr\u00e1fico para um novo arquivo no Apresenta\u00e7\u00f5es.<\/li>\n<li>Como apresentar mensagens de notifica\u00e7\u00e3o e caixas de di\u00e1logo personalizadas para o usu\u00e1rio no Planilhas.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<aside class=\"special\">\n<h4>Conceitos-chave:<\/h4>\n<ol start=\"1\" type=\"1\">\n<li>Quando um arquivo com um script vinculado ao cont\u00eainer \u00e9 copiado, a nova c\u00f3pia do arquivo obt\u00e9m uma c\u00f3pia do script vinculado.\u00a0Se voc\u00ea fizer altera\u00e7\u00f5es na c\u00f3pia, elas n\u00e3o ser\u00e3o refletidas no original e vice-versa.<\/li>\n<li>O servi\u00e7o Spreadsheet usa EmbeddedChart e classes de construtor associadas para criar e modificar\u00a0gr\u00e1ficos\u00a0que aparecem no Sheets.\u00a0O servi\u00e7o Charts \u00e9 usado para criar e modificar\u00a0gr\u00e1ficos\u00a0usados \u200b\u200bfora do Planilhas, como em aplicativos da web do Apps Script.<\/li>\n<li>As mensagens do sistema s\u00e3o usadas no Planilhas para fornecer uma mensagem de alerta de curta dura\u00e7\u00e3o ao usu\u00e1rio, sem exigir que ele execute alguma a\u00e7\u00e3o.<\/li>\n<li>As caixas de di\u00e1logo personalizadas s\u00e3o caixas de di\u00e1logo modais criadas com HTML e JavaScript.\u00a0Enquanto estiverem na tela, o usu\u00e1rio n\u00e3o conseguir\u00e1 interagir com o resto da interface do Planilhas.\u00a0As caixas de di\u00e1logo personalizadas s\u00e3o \u00f3timas para solicitar ao usu\u00e1rio as informa\u00e7\u00f5es de que o script precisa para prosseguir ou para for\u00e7ar o usu\u00e1rio a ler algo antes de continuar a trabalhar no Planilhas.<\/li>\n<li>Os\u00a0gr\u00e1ficos\u00a0vinculados no Apresenta\u00e7\u00f5es s\u00e3o conectados a um gr\u00e1fico original no Planilhas.\u00a0Se voc\u00ea editar o gr\u00e1fico do Planilhas original, depois de alguns momentos, poder\u00e1 atualiz\u00e1-lo no Apresenta\u00e7\u00f5es para continuar as edi\u00e7\u00f5es.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<\/aside>\n<aside class=\"special\">\n<h4>Termos-chave:<\/h4>\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\u00a0: a \u00fanica c\u00e9lula destacada na p\u00e1gina 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><a href=\"https:\/\/developers.google.com\/apps-script\/guides\/dialogs#custom_dialogs\" target=\"_blank\" rel=\"noopener noreferrer\">Caixa de di\u00e1logo personalizada<\/a>\u00a0: Uma janela de di\u00e1logo modal personaliz\u00e1vel, constru\u00edda a partir de HTML e JavaScript, usada para fornecer informa\u00e7\u00f5es ou interatividade aos usu\u00e1rios.\u00a0Enquanto est\u00e3o na tela, caixas de di\u00e1logo personalizadas evitam que o usu\u00e1rio interaja com o resto da interface do Planilhas.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-chart\" target=\"_blank\" rel=\"noopener noreferrer\"><code>EmbeddedChart<\/code><\/a>: Um gr\u00e1fico que foi incorporado em uma planilha.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-chart-builder\" target=\"_blank\" rel=\"noopener noreferrer\"><code>EmbeddedChartBuilder<\/code><\/a>: Uma classe ou construtor usado para criar ou editar um\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/embedded-chart\" target=\"_blank\" rel=\"noopener noreferrer\"><code>EmbeddedChart<\/code><\/a>.<\/li>\n<li>Fun\u00e7\u00e3o auxiliar\u00a0: uma fun\u00e7\u00e3o, geralmente privada, que \u00e9 chamada por outra pessoa para concluir uma pequena subtarefa.\u00a0As fun\u00e7\u00f5es auxiliares geralmente s\u00e3o usadas quando a subtarefa precisa ser realizada muitas vezes em locais diferentes.<\/li>\n<li><a href=\"https:\/\/www.json.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">JSON<\/a>\u00a0: formato de arquivo para definir objetos de dados e suas caracter\u00edsticas de texto.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/guides\/triggers\/#onopene\" target=\"_blank\" rel=\"noopener noreferrer\"><code>onOpen()<\/code><\/a>: Se definido em um script, um gatilho simples que dispara sempre que um arquivo \u00e9 aberto ou recarregado.<\/li>\n<li>Gr\u00e1fico vinculado\u00a0: no Apresenta\u00e7\u00f5es, um gr\u00e1fico conectado a um original no Planilhas.\u00a0Se voc\u00ea editar o gr\u00e1fico do Planilhas original, poder\u00e1 atualizar o link no Apresenta\u00e7\u00f5es para continuar as edi\u00e7\u00f5es.<\/li>\n<li>Caixa de di\u00e1logo modal\u00a0: Veja a\u00a0caixa de di\u00e1logo personalizada\u00a0.<\/li>\n<li>Apresenta\u00e7\u00e3o\u00a0: um arquivo do Apresenta\u00e7\u00f5es Google que reside no Google Drive.\u00a0A\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/presentation\" target=\"_blank\" rel=\"noopener noreferrer\"><code>Presentation<\/code><\/a>\u00a0classe permite que voc\u00ea acesse e modifique apresenta\u00e7\u00f5es.<\/li>\n<li>Intervalo\u00a0: um 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>Gatilhos simples\u00a0: um subtipo de\u00a0gatilhos\u00a0no Apps Script que t\u00eam nomes de fun\u00e7\u00e3o de gatilho reservados e certas\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/guides\/triggers\/#restrictions\" target=\"_blank\" rel=\"noopener noreferrer\">restri\u00e7\u00f5es<\/a>\u00a0;\u00a0por exemplo\u00a0<code>onOpen()<\/code>,.<\/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>Slide\u00a0: um \u00fanico slide em uma apresenta\u00e7\u00e3o.\u00a0A\u00a0<code><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/slide\" target=\"_blank\" rel=\"noopener noreferrer\">Slide<\/a><\/code>\u00a0classe permite acessar e modificar slides.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/slides-app\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SlidesApp<\/code><\/a>: A\u00a0<a href=\"https:\/\/developers.google.com\/apps-script\/reference\/slides\/slides-app\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SlidesApp<\/code><\/a>\u00a0classe serve como classe pai para o servi\u00e7o Apresenta\u00e7\u00f5es e fornece um ponto de partida para o c\u00f3digo que l\u00ea ou manipula dados do Apresenta\u00e7\u00f5es Google.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet-app\" target=\"_blank\" rel=\"noopener noreferrer\"><code>SpreadsheetApp<\/code><\/a>: A\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<li><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/spreadsheet\/spreadsheet#toastmsg\" target=\"_blank\" rel=\"noopener noreferrer\">Brinde<\/a>\u00a0: Uma caixa de di\u00e1logo de &#8220;visualiza\u00e7\u00e3o&#8221; de curta dura\u00e7\u00e3o usada para informar o usu\u00e1rio sobre algum evento ou processo no Planilhas Google.<\/li>\n<li>Gatilhos\u00a0: um evento vinculado a uma fun\u00e7\u00e3o do Apps Script.\u00a0Quando o evento (como uma planilha sendo aberta) ocorre, o acionador &#8220;dispara&#8221; e executa automaticamente a fun\u00e7\u00e3o do Apps Script associada.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/apps-script\/reference\/url-fetch\/\" target=\"_blank\" rel=\"noopener noreferrer\">UrlFetch<\/a>\u00a0: o servi\u00e7o Apps Script que permite que os scripts se conectem a endpoints de URL para fazer solicita\u00e7\u00f5es e receber respostas.<\/li>\n<\/ul>\n<\/aside>\n","protected":false},"excerpt":{"rendered":"<p>Configurando Antes de continuar, voc\u00ea precisa de uma planilha com alguns dados.\u00a0Como antes, fornecemos uma folha de dados que voc\u00ea pode copiar para esses exerc\u00edcios.\u00a0Execute as seguintes etapas: Clique neste link para copiar a planilha de dados\u00a0e, em seguida, clique no bot\u00e3o\u00a0Fazer uma c\u00f3pia\u00a0.\u00a0A nova planilha \u00e9 colocada em sua pasta inicial do Google Drive [&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-709","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/wp-json\/wp\/v2\/pages\/709","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=709"}],"version-history":[{"count":6,"href":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/wp-json\/wp\/v2\/pages\/709\/revisions"}],"predecessor-version":[{"id":732,"href":"https:\/\/wp.ufpel.edu.br\/planilhasgoogle\/wp-json\/wp\/v2\/pages\/709\/revisions\/732"}],"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=709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}