概述:我有一个包含多个选项卡的 Google 表格模板文件。打开文件时,系统会弹出一条消息提示用户“单击链接以创建副本 --> 我的工作簿副本”。选择“我的工作簿副本”后,文件将保存到特定的 Google Drive 文件夹,并打开一个唯一/新的 Google 电子表格文件,用户可以在其中进行编辑。
目标:每次复制时,我都会尝试保存新 Google 表格文件中的 URL 链接(保存到“参考”选项卡)。我的目标是将 URL 链接添加到“参考”表格的 C 列中。
当前问题: makeAcopy 脚本(复制电子表格并将文件添加到指定的 Google Drive),但 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 记录信息而导致的。
尝试在您需要的时候将这样的函数添加到您的脚本中。
然后您应该能够将 log() 添加到脚本的末尾,或者在设置所需的变量之后的某个时间点添加。
您可以添加以下内容来
makeAcopy script
实现您想要做的事情:完整代码如下:
输出