function createCustomForms() {
// Obtém a planilha ativa
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheets = spreadsheet.getSheets(); // Obtém todas as abas da
planilha
Logger.log('ID da planilha: ' + spreadsheet.getId());
// Itera por cada aba para processá-la
sheets.forEach(function(sheet) {
// Nome da aba
const sheetName = sheet.getName();
Logger.log('Processando a aba: ' + sheetName);
// Obtém os dados da aba
const data = sheet.getDataRange().getValues();
// Verifica se existem dados na planilha (pelo menos 2 linhas, uma
para o cabeçalho)
if (data.length > 1) {
const form = FormApp.create('Formulário Personalizado - ' +
sheetName); // Nome do formulário baseado na aba
Logger.log('Formulário criado: ' + form.getTitle());
// Itera sobre cada linha de dados, começando pela segunda linha
(índice 1) para ignorar o cabeçalho
for (let i = 1; i < data.length; i++) {
const questionType = data[i][0]; // Tipo da pergunta
(primeira coluna)
const questionTitle = data[i][1]; // Título da pergunta
(segunda coluna)
const options = data[i][2] ? data[i][2].split(',') : []; //
Opções (terceira coluna), divididas por vírgula
const isRequired = data[i][3] === 'Sim'; // Verifica se a
pergunta é obrigatória (quarta coluna)
// Verifica se o título da pergunta e o tipo de pergunta são
válidos
if (questionTitle && questionType) {
Logger.log('Adicionando pergunta: ' + questionTitle);
// Adiciona a pergunta ao formulário com base no tipo
switch (questionType.toLowerCase()) {
case 'resposta curta':
addShortAnswerQuestion(form, questionTitle, isRequired);
break;
case 'parágrafo':
addParagraphQuestion(form, questionTitle, isRequired);
break;
case 'múltipla escolha':
addMultipleChoiceQuestion(form, questionTitle, options,
isRequired);
break;
case 'checkbox':
addCheckboxQuestion(form, questionTitle, options,
isRequired);
break;
case 'dropdown':
addDropdownQuestion(form, questionTitle, options,
isRequired);
break;
case 'escala linear':
addLinearScaleQuestion(form, questionTitle, isRequired);
break;
case 'grelha múltipla escolha':
addMultipleChoiceGridQuestion(form, questionTitle,
options, isRequired);
break;
case 'grelha checkbox':
addCheckboxGridQuestion(form, questionTitle, options,
isRequired);
break;
case 'data':
addDateQuestion(form, questionTitle, isRequired);
break;
case 'hora':
addTimeQuestion(form, questionTitle, isRequired);
break;
default:
Logger.log('Tipo de pergunta desconhecido: ' +
questionType);
}
} else {
Logger.log('Título da pergunta ou tipo inválido na linha ' +
(i + 1));
}
}
// Exibe o link para editar o formulário
Logger.log('Formulário criado com sucesso: ' +
form.getEditUrl());
} else {
Logger.log('Nenhum dado encontrado na aba "' + sheetName + '"');
}
});
}
// Função para adicionar uma pergunta de resposta curta
function addShortAnswerQuestion(form, title, isRequired) {
const item = form.addTextItem();
item.setTitle(title).setRequired(isRequired);
Logger.log('Pergunta de resposta curta criada: ' + title);
}
// Função para adicionar uma pergunta de parágrafo
function addParagraphQuestion(form, title, isRequired) {
const item = form.addParagraphTextItem();
item.setTitle(title).setRequired(isRequired);
Logger.log('Pergunta de parágrafo criada: ' + title);
}
// Função para adicionar uma pergunta de múltipla escolha
function addMultipleChoiceQuestion(form, title, options, isRequired) {
const item = form.addMultipleChoiceItem();
item.setTitle(title).setChoiceValues(options).setRequired(isRequired);
Logger.log('Pergunta de múltipla escolha criada: ' + title);
}
// Função para adicionar uma pergunta de checkbox
function addCheckboxQuestion(form, title, options, isRequired) {
const item = form.addCheckboxItem();
item.setTitle(title).setChoiceValues(options).setRequired(isRequired);
Logger.log('Pergunta de checkbox criada: ' + title);
}
// Função para adicionar uma pergunta de dropdown
function addDropdownQuestion(form, title, options, isRequired) {
const item = form.addListItem();
item.setTitle(title).setChoiceValues(options).setRequired(isRequired);
Logger.log('Pergunta de dropdown criada: ' + title);
}
// Função para adicionar uma pergunta de escala linear
function addLinearScaleQuestion(form, title, isRequired) {
const item = form.addScaleItem();
item.setTitle(title).setBounds(1, 5).setLabels('1 (Muito
insatisfeito)', '5 (Muito satisfeito)').setRequired(isRequired);
Logger.log('Pergunta de escala linear criada: ' + title);
}
// Função para adicionar uma pergunta de grelha de múltipla escolha
function addMultipleChoiceGridQuestion(form, title, options,
isRequired) {
const item = form.addGridItem();
item.setTitle(title)
.setRows(options)
.setColumns(['Ótimo', 'Bom', 'Regular', 'Ruim'])
.setRequired(isRequired);
Logger.log('Pergunta de grelha de múltipla escolha criada: ' +
title);
}
// Função para adicionar uma pergunta de grelha de checkbox
function addCheckboxGridQuestion(form, title, options, isRequired) {
const item = form.addGridItem();
item.setTitle(title)
.setRows(options)
.setColumns(['Sim', 'Não'])
.setRequired(isRequired);
Logger.log('Pergunta de grelha de checkbox criada: ' + title);
}
// Função para adicionar uma pergunta de data
function addDateQuestion(form, title, isRequired) {
const item = form.addDateItem();
item.setTitle(title).setRequired(isRequired);
Logger.log('Pergunta de data criada: ' + title);
}
// Função para adicionar uma pergunta de hora
function addTimeQuestion(form, title, isRequired) {
const item = form.addTimeItem();
item.setTitle(title).setRequired(isRequired);
Logger.log('Pergunta de hora criada: ' + title);
}
PROMP MODELO: Produza em formato tabela, um questionário que deve ter na primeira linha
da tabela os seguintes componentes: Tipo de Pergunta, Título da Pergunta, Opções de
Resposta, Obrigatório. Na coluna relativa ao tipo de pergunta deve introduzir os dados de
acordo com as seguintes categorias: Resposta Curta, Múltipla Escolha, Parágrafo, Checkbox,
Grelha Checkbox, Data, Dropdown, Escala Linear, Hora, Grelha Múltipla Escolha. O conteúdo
do questionário deve ser sobre preposições in, on, at, just, since, for, already, yet, ever e never
e ele deve conter 15 perguntas.