概述:我有一个包含多个选项卡的 Google Sheets 模板文件。打开文件时,系统会弹出一条消息提示用户“单击链接以创建副本 --> 我的工作簿副本”。选择“我的工作簿副本”后,文件将保存到特定的 Google 云端硬盘文件夹,并打开一个独特/新的 Google 电子表格文件,他们可以在其中进行编辑。
目标:每次制作副本时,我都会尝试保存新 Google 表格文件中的 URL 链接(到 Reference 选项卡)。我的目标是将 URL 链接添加到参考表的 C 列中。
当前问题: makeAcopy 脚本(制作电子表格的副本并将文件添加到指定的 Google 云端硬盘),但 URL 链接未添加到参考表中。我不确定我是否采取了正确的方法,不清楚将 URL 链接添加到参考表的逻辑是否需要在单独的事件(打开时)中添加,或者是否应包含在 makeAcopy 脚本中。必须感谢进一步的指导。
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;
}
由于特定工作表 ID 的权限,我无法完全测试您的脚本。但是,我确实相信问题是由于尝试使用 onOpen 的 e 记录信息造成的。
尝试在需要的时候将这样的函数添加到脚本中。
function log(){
refsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Reference");
refsheet.insertRows(2); // This logs top to bottom instead of appending to the bottom
fileName = "file's name"; // Replace with the variable containing the name
fileURL = "file's URL"; // Replace with the variable containing the URL
urlToLog = [[Date(),fileName,fileURL]];
refsheet.getRange(2,1,1,3).setValues(urlToLog);
}
然后,您应该能够将 log() 添加到脚本末尾,或者在设置所需的变量之后的某个时刻。