Renderizar planilha parcial do Google no script do aplicativo da web do Google Apps
Eu pretendia fazer a planilha do google como um site compartilhado usando linha congelada. porque em um site compartilhado, eu não conseguia corrigir colunas e linhas de forma alguma. finalmente percebi que pode ser possível fazer sucessivamente se eu usar o aplicativo da web no google apps script como renderização parcial. (como usando html ou javascript)
mas não consegui invocar a planilha parcial do Google, que era um intervalo definido. quando eu fiz isso pude ver
“Não podia ser mostrado”.
mas estranhamente quando eu não adicionei o intervalo, mostrou bem. Mas não é o que eu quero. (Eu obtive a informação aqui:https://www.steegle.com/google-sites/how-to/insert-websites-apps-scripts-and-gadgets/embed-google-sheet-range)
Este é o intervalo aplicável que desejo corrigir em um site, usando o script de aplicativos do Google e o aplicativo da web. https://docs.google.com/spreadsheets/d/1L-NvkrbmiDk2nT7bUTRalrgON6K5zEFYZMu362GVNnE/htmlembed?single=true&gid=1680391550&range=A1:AI7&widget=false&chrome=false&headers=false
E tudo isso faz parte do documento. https://docs.google.com/spreadsheets/d/e/2PACX-1vQZBVb3b0HgvmLSJBXpp57NkZTaa5Zn_HTQGwkenlhI_vLxmgxN_jwUY_TbLLCszyqIF2Ht-1qNf37o/pubhtml?gid=1680391550&single=true
Publiquei documento para poder ser mostrado a todos os usuários que acessam o aplicativo web (permissão de visualização) na planilha google e no aplicativo web.
Eu agradeceria se você pudesse me informar sobre tudo o que você sabe, como resolver este problema de A a Z. Eu quero saber como consertar planilha parcial do Google que foi chamada como url na página html no aplicativo da web do google script de aplicativos. ou a maneira como invocar planilha parcial do Google no aplicativo da web a partir do script do Google Apps. obrigado.
Respostas
Emitir:
As linhas não podem ser congeladas em planilhas publicadas: consulte Como posso congelar colunas / linhas em uma tabela pública compartilhada? .
Solução alternativa # 1. Incorpore a própria planilha:
Em vez de publicar o arquivo na web e incorporar a versão publicada (contendo URL /pubhtml), você pode incorporar a própria planilha, se não tiver problemas para torná-la pública (compartilhada com Anyone with the link). Dessa forma, a planilha seria vista como está, com as linhas congeladas no topo.
No entanto, você mencionou nos comentários que notou que as linhas congeladas não podem ser vistas corretamente em seu dispositivo móvel, e isso faz com que esta solução alternativa não seja apropriada para sua situação.
Solução alternativa # 2. Construir tabela HTML:
Uma solução alternativa menos direta e mais trabalhosa poderia ser fazer o seguinte (vou apenas dar algumas dicas gerais e incluir referências para você investigar mais a fundo):
- Recupere os dados da planilha por meio de getRange (linha, coluna, numRows, numColumns) e getDisplayValues () . Como os cabeçalhos devem ser congelados (eles devem ter estilos separados), sugiro recuperar os cabeçalhos e o resto dos dados separadamente.
- Usando esses dados, crie um modelo HTML para criar uma tabela HTML criada dinamicamente .
- Ao recuperar os dados, você deve levar em consideração que algumas células estão mescladas. Você deve obter as informações sobre quais células são mescladas e com quais, e usar essas informações ao criar a tabela HTML. Range.isPartOfMerge () pode ser usado para verificar se as células estão mescladas (veja esta resposta para mais dicas sobre o assunto). Você deve, por sua vez, mesclar as células da tabela correspondentes, por exemplo, usando o
colspanatributo do elemento td . Veja, por exemplo, esta questão . - Você deve usar CSS ou similar, para efetivamente congelar os cabeçalhos. Existem muitas perguntas no StackOverflow que abordam esse problema. Consulte Congelando / corrigindo a linha do cabeçalho superior de uma tabela ou Congelando a linha superior somente para uma tabela html (rolagem do cabeçalho da tabela fixa) para iniciantes.
Amostra de código:
Aqui, anexei o código para recuperar os dados da planilha e usá-lo para criar uma tabela dinâmica (os recursos de estilo - linhas congeladas, formatação geral - e o problema com as células mescladas não estão incluídos - se você tiver problemas com esses problemas, Eu sugiro que você poste perguntas separadamente sobre estes–):
Code.gs:
function doGet(e) {
return HtmlService.createTemplateFromFile("index").evaluate();
}
function getHeaders() {
const sheet = SpreadsheetApp.getActive().getSheetByName("출석부");
return sheet.getRange(1, 1, 7, sheet.getLastColumn()).getDisplayValues();
}
function getBody() {
const sheet = SpreadsheetApp.getActive().getSheetByName("출석부");
const firstRow = 8;
const numRows = sheet.getLastRow() - firstRow + 1;
return sheet.getRange(firstRow, 1, numRows, sheet.getLastColumn()).getDisplayValues();
}
index.html:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<table>
<thead>
<? const headers = getHeaders();
for (let i = 0; i < headers.length; i++) { ?>
<tr>
<? for (let j = 0; j < headers[0].length; j++) { ?>
<th><?= headers[i][j] ?></th>
<? } ?>
<? } ?>
</thead>
<tbody>
<? const body = getBody();
for (let k = 0; k < body.length; k++) { ?>
<tr>
<? for (let l = 0; l < body[0].length; l++) { ?>
<td><?= body[k][l] ?></td>
<? } ?>
<? } ?>
</tbody>
</table>
</div>
</body>
</html>
Referência:
- Como posso congelar colunas / linhas em uma tabela pública compartilhada?
- Serviço HTML: HTML com modelo
Você pode colocá-lo como iframe em seu html e adicionar vários parâmetros para formatá-lo da maneira que desejar. Muitos recursos online para os parâmetros.
<span><br><iframe src="DOCSURL/pubhtml?gid=37486499&single=true&single=true&range=A2&widget=false&chrome=false&headers=false" height="50" ></iframe> </span>
<br>
Isso basicamente me dá uma única célula. Além dos parâmetros, você pode aplicar css ao seu iframe.
Deixe-me saber se isso ajudar!