Existem N maneiras de se criar uma API REST a partir de sua planilha Google (sheets). Nesta postagem mostrarei o que considero uma versão “simplificada” para que em poucos minutos você consigo realizar algumas requisições de seus dados em formato json, e criar fluxos independentes e consumíveis facilitando e dinamizando suas tarefas e atividades cotidianas (a depender de seus requisitos e finalidades, claro).
Vamos lá!?
// Passo 1
var wbook = SpreadsheetApp.openByUrl('<https://docs.google.com/spreadsheets/d/17rAxTU-kBLKad4hjzpxJ10chLlyqs6-EoP4TaBo4vq4/edit#gid=0>');
var sheet = wbook.getSheetByName('Sheet1');
// Passo 2
function doPost(e) {
if (e && e.parameter) {
var action = e.parameter.action;
if (action == 'addUser') {
return addUser(e);
} else if (action == 'updateUser') {
return updateUser(e);
} else if (action == 'deleteUser') {
return deleteUser(e);
}
}
return ContentService.createTextOutput("Erro: Ação inválida ou parâmetros ausentes").setMimeType(ContentService.MimeType.TEXT);
}
function doGet(e) {
var action = e.parameter.action;
if (action == 'getAll') {
return getAllData();
}
return ContentService.createTextOutput("Erro: Ação inválida ou parâmetros ausentes").setMimeType(ContentService.MimeType.TEXT);
}
// Passo 3
function getAllData() {
var data = getDataAsJson();
return ContentService.createTextOutput(JSON.stringify(data)).setMimeType(ContentService.MimeType.JSON);
}
function addUser(e) {
var user = JSON.parse(e.postData.contents);
// Obter todos os IDs existentes
var existingIds = getDataAsJson().map(function (user) {
return user.id;
});
// Gerar um novo ID único
var userId = generateUniqueId(existingIds);
// Adicionar o ID ao usuário
user.id = userId;
// Adicionar usuário à planilha
sheet.appendRow([userId, user.name, user.age, user.mobile, user.email]);
return ContentService.createTextOutput("Sucesso: Usuário adicionado").setMimeType(ContentService.MimeType.TEXT);
}
function updateUser(e) {
var user = JSON.parse(e.postData.contents);
var userId = user.id; // Supondo que o JSON inclui um campo 'id'
var data = getDataAsJson();
for (var i = 0; i < data.length; i++) {
if (data[i].id == userId) {
// Atualizar os valores correspondentes na planilha
sheet.getRange(i + 2, 2, 1, 4).setValues([[user.name, user.age, user.mobile, user.email]]);
return ContentService.createTextOutput("Sucesso: Usuário atualizado").setMimeType(ContentService.MimeType.TEXT);
}
}
return ContentService.createTextOutput("Erro: Usuário não encontrado").setMimeType(ContentService.MimeType.TEXT);
}
function deleteUser(e) {
var userId = e.parameter.userId; // Supondo que o ID do usuário seja passado como um parâmetro
var data = getDataAsJson();
for (var i = 0; i < data.length; i++) {
if (data[i].id == userId) {
sheet.deleteRow(i + 2);
return ContentService.createTextOutput("Sucesso: Usuário excluído").setMimeType(ContentService.MimeType.TEXT);
}
}
return ContentService.createTextOutput("Erro: Usuário não encontrado").setMimeType(ContentService.MimeType.TEXT);
}
// Função auxiliar para obter dados da planilha como JSON
function getDataAsJson() {
var dataRange = sheet.getDataRange();
var data = dataRange.getValues();
var headers = data[0];
var jsonData = [];
for (var i = 1; i < data.length; i++) {
var row = {};
for (var j = 0; j < headers.length; j++) {
row[headers[j]] = data[i][j];
}
jsonData.push(row);
}
return jsonData;
}
// Função auxiliar para gerar um ID único
function generateUniqueId(existingIds) {
var newId = 1;
while (existingIds.includes(newId)) {
newId++;
}
return newId;
}
Para realizar testes no Postman com as funções criadas no Google Apps Script, siga estas instruções:
/exec?action=addUser
.