Skip to content

Instantly share code, notes, and snippets.

@eduardojmatos
Created March 29, 2022 21:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eduardojmatos/23a71a21c073142659debdbad07c0ae6 to your computer and use it in GitHub Desktop.
Save eduardojmatos/23a71a21c073142659debdbad07c0ae6 to your computer and use it in GitHub Desktop.
Copying a spreadsheet
const PDI_TEMPLATE = 'TEMPLATE_URL';
const PDI_TRACKER = 'TRACKING_SHEAT';
const MAIN_SHEET_NAME = 'Orientações Gerais';
const USER_EMAIL = Session.getActiveUser().getEmail();
const DIALOG_SIZE_H = 150
const DIALOG_SIZE_W = 400
function open() {
SpreadsheetApp
.getUi()
.createMenu('Copiar')
.addItem('Copiar', 'copy')
.addToUi();
}
function copy() {
openLoadingDialog();
var newPDI = createNewPDI();
normalizeSheet(newPDI);
openFileDialog(newPDI.getUrl());
trackingPDIs(newPDI);
}
function createNewPDI(){
var template = DriveApp.getFileById(PDI_TEMPLATE);
var filename = template.getName();
var rootFolder = DriveApp.getRootFolder();
var newFile = template.makeCopy(filename, rootFolder).setName(`PDI - ${USER_EMAIL}`)
return newFile;
}
function normalizeSheet(newFile) {
var pdiSheet = SpreadsheetApp.openById(newFile.getId());
var sheet = pdiSheet.getSheetByName(MAIN_SHEET_NAME);
newFile.setOwner(USER_EMAIL);
newFile.setStarred(true);
pdiSheet.deleteSheet(sheet);
}
function openLoadingDialog() {
const MESSAGE_PRE_LOADING = `\
<div style="font-family: Arial; font-size: 14px; text-align: center; padding-top: 20px"> \
<p><strong>Aguarde enquanto a cópia do PDI é feita!</strong></p> \
<p>Vamos gerar um arquivo no seu Google Drive.</p> \
</div> \
`;
var htmlPreLoading = HtmlService.createHtmlOutput(MESSAGE_PRE_LOADING)
.setHeight(DIALOG_SIZE_H)
.setWidth(DIALOG_SIZE_W);
SpreadsheetApp.getUi().showModalDialog(htmlPreLoading, 'Iniciando processo de cópia');
}
function openFileDialog(fileURL) {
var htmlString = ` \
<div style="text-align:center; padding-top: 40px"> \
<a href="${fileURL}" onclick="google.script.host.close();" target="_blank" style="font-family: Arial;font-size: 18px;padding: 29px 20px;background-color: #bfa03a;color: black;border-radius: 16px;text-decoration: none;text-transform: uppercase;font-weight: bold;"> \
Abra aqui seu PDI \
</a> \
</div> \
`;
var html = HtmlService.createHtmlOutput(htmlString)
.setHeight(DIALOG_SIZE_H)
.setWidth(DIALOG_SIZE_W);
SpreadsheetApp.getUi().showModalDialog(html, 'Finalizado!');
}
function trackingPDIs(newPDI) {
// People PDI's tracking sheet
var tracker = SpreadsheetApp.openById(PDI_TRACKER);
// tracking how many sheets are being done by willers
tracker.getSheetByName('Página1').appendRow([USER_EMAIL, Utilities.formatDate(new Date(), "GMT", "dd/MM/yyyy")]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment