Visão geral : Tenho um arquivo de modelo do Planilhas Google que contém várias guias. Quando o arquivo é aberto, o usuário recebe uma mensagem pop-up para "Clique no link para criar uma cópia --> Minha cópia da pasta de trabalho". Depois que a "Cópia da minha pasta de trabalho" é selecionada, o arquivo é salvo em uma pasta específica do Google Drive, e um arquivo exclusivo/novo da Planilha Google é aberto, no qual eles podem fazer edições.
Objetivo: Estou tentando salvar os links de URL dos novos arquivos do Planilhas Google sempre que uma cópia for feita (para a guia Referência ). Meu objetivo é ter os links de URL adicionados à planilha Referência, na coluna C.
Problema atual: O script makeAcopy (faz uma cópia da planilha e adiciona o arquivo ao Google Drive especificado), mas o Link da URL não está sendo adicionado à planilha de referência. Não tenho certeza se estou adotando a abordagem correta, não está claro se a lógica para adicionar os links de URL à planilha de referência precisa ser adicionada em um evento separado (On Open) ou se deve ser incluída no script makeAcopy. Mais orientações seriam muito apreciadas.
function onOpen(e){
const info = e.namedValues;
const blob = makeAcopy(info);
const date = Date;
const entryRow = e.range.getRow();
SpreadsheetApp.getActiveSheet().getSheetName("Reference").getRange(entryRow,3).setValue(blob);
SpreadsheetApp.getActiveSheet().getSheetName("Reference").getRange(entryRow,2).setValue(fileName);
SpreadsheetApp.getActiveSheet().getSheetName("Reference").getRange(entryRow,1).setValue(date);
}
function makeAcopy(info){
var nom = 'My Workbook copy'
var sheet = SpreadsheetApp.openById('1EylqqfqXWaSCJbvVmqrwJHcwGPUvlQYOZ0wSpvT_mMY')
var destFolder = DriveApp.getFolderById("1iCVsXmeSMHOpISQslJhX7r842aSHrqos"); //.next();
const ds = Utilities.formatDate(new Date(),SpreadsheetApp.getActive().getSpreadsheetTimeZone(),"MM.dd.yyyy");
//var fileName = DriveApp.getFileById(sheet.getId()).makeCopy(nom, destFolder).setName(`${nom}.${ds}`);
var fileID = DriveApp.getFileById(sheet.getId()).makeCopy(nom, destFolder).getId();
var htmlOutput = HtmlService
.createHtmlOutput('<a href="https://docs.google.com/spreadsheets/d/' + fileID + '/" target="_blank">' + nom + '</a>')
.setWidth(350) //optional
.setHeight(50); //optional
SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Click link to create a Copy');
return fileID;
//return fileName;
}
Não consigo testar completamente seu script por causa das permissões para IDs de planilhas específicas. No entanto, acredito que o problema resulta da tentativa de registrar as informações usando o e do onOpen.
Tente adicionar uma função como essa ao seu script no momento que desejar.
Você poderá então adicionar log() no final do seu script, ou em algum momento depois que as variáveis necessárias forem definidas.
Você pode adicionar o seguinte para
makeAcopy script
conseguir o que deseja:O código completo se tornaria:
SAÍDA