Caixa de Emenda
Crie o diretório para o APP ser vinculado no Google Drive, por exemplo “Caixas Fibras”;
Crie dentro do novo diretório “Fotos”;
Na pasta Fotos dê permissão para todos com o link poderem visualizar;
Entre na pasta "Fotos", copie o ID do diretório que está na barra de endereços, segue exemplo abaixo:
https://drive.google.com/drive/folders/<IDdaPasta>Volte para o diretório “Caixas Fibras”; crie um AppScript com o seguinte conteúdo:
function doPost(e) {
var data = Utilities.base64Decode(e.parameters.data);
var blob = Utilities.newBlob(data, e.parameters.mimetype, e.parameters.filename);
DriveApp.getFolderById('<IDDIRFOTOS>').createFile(blob);
return ContentService.createTextOutput("Envio com sucesso");
}
Onde “<IDDIRFOTOS>” coloque o ID do diretório criado para salvar as fotos, salve e implante como APP Web.
Dê as devidas permissões e copie o link de execução web;
Ainda no diretório “Caixas Fibras” Crie uma planilha em branco;
Na planilha selecione as opções : Extenções > App Script;
Copie o código abaixo e salve o arquivo, execute a implantação para APP Web com as mesmas permissões do script de fotos:
function doGet(e) {
var sheet = getOrCreateSheet("Dados APP");
var chaveDados = e.parameter.chaveDados;
var consultaDados = e.parameter.consultaDados;
var removeDado = e.parameter.removeDado;
var var1 = e.parameter.var1;
var var2 = e.parameter.var2;
var var3 = e.parameter.var3;
var var4 = e.parameter.var4;
var var5 = e.parameter.var5;
var var6 = e.parameter.var6;
var var7 = e.parameter.var7;
var var8 = e.parameter.var8;
var var9 = e.parameter.var9;
var var10 = e.parameter.var10;
if (removeDado === "true") {
return apagarDado(sheet, chaveDados, var1);
}
if (chaveDados === "TodosDados") {
return buscarTodosDados(sheet);
}
if (consultaDados) {
var linha = buscarChaveDados(sheet, chaveDados);
if (linha > 0) {
var linhaValores = sheet.getRange(linha, 1, 1, 11).getValues()[0];
var csv = linhaValores.join(",");
return ContentService.createTextOutput(csv).setMimeType(ContentService.MimeType.TEXT);
} else {
return ContentService.createTextOutput("Chave não encontrada").setMimeType(ContentService.MimeType.TEXT);
}
}
if (!removeDado) {
var rowToUpdate = buscarChaveDados(sheet, chaveDados);
if (rowToUpdate > 0) {
sheet.getRange(rowToUpdate, 1, 1, 11).setValues([[chaveDados, var1, var2, var3, var4, var5, var6, var7, var8, var9, var10]]);
return ContentService.createTextOutput("Dados atualizados na linha " + rowToUpdate);
} else {
sheet.appendRow([chaveDados, var1, var2, var3, var4, var5, var6, var7, var8, var9, var10]);
return ContentService.createTextOutput("Nova linha adicionada com sucesso");
}
}
return ContentService.createTextOutput("Operação inválida").setMimeType(ContentService.MimeType.TEXT);
}
function apagarDado(sheet, chaveDados, var1) {
if (chaveDados === "TodosDados") {
return ContentService.createTextOutput("Operação inválida: Não é permitido apagar TodosDados").setMimeType(ContentService.MimeType.TEXT);
}
var dataRange = sheet.getDataRange();
var data = dataRange.getValues();
for (var i = 0; i < data.length; i++) {
if (data[i][0].toString().trim() === chaveDados.toString().trim() && data[i][1].toString().trim() === var1.toString().trim()) {
sheet.deleteRow(i + 1); // Apaga a linha encontrada
return ContentService.createTextOutput("Linha com chaveDados '" + chaveDados + "' e var1 '" + var1 + "' apagada com sucesso").setMimeType(ContentService.MimeType.TEXT);
}
}
return ContentService.createTextOutput("Chave não encontrada ou var1 não corresponde").setMimeType(ContentService.MimeType.TEXT);
}
function buscarTodosDados(sheet) {
var dataRange = sheet.getDataRange();
var data = dataRange.getValues();
data.shift();
var csv = data.map(function(row) {
return row.join(",");
}).join("\n");
return ContentService.createTextOutput(csv).setMimeType(ContentService.MimeType.TEXT);
}
function buscarChaveDados(sheet, chaveDados) {
var dataRange = sheet.getDataRange();
var data = dataRange.getValues();
for (var i = 0; i < data.length; i++) {
if (data[i][0].toString().trim() === chaveDados.toString().trim()) {
return i + 1;
}
}
return -1;
}
function getOrCreateSheet(sheetName) {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName(sheetName);
if (!sheet) {
sheet = spreadsheet.insertSheet(sheetName);
sheet.appendRow(["chaveDados", "var1", "var2", "var3", "var4", "var5", "var6", "var7", "var8", "var9", "var10"]);
}
return sheet;
}
Dê as devidas permissões e copie o link de execução web;
Envie os dois links para os colaboradores salvarem no APP, na tela de Ferramentas, Vincular GDrive; nos campos correspondentes salvar os links "Link Script Envio Fotos :" e "Link Script da Planilha :";
Cuidado para não salvar invertido os links, não existe filtro de proteção para a inversão dos scripts que tem funções bem definidas, um tem a função de fazer upload de fotos e o outro transmitir dados para a planilha, caso faça invertido, use a opção "Apagar Dados Locais" na tela de ferramentas e refaça os vinculos corretamente !