在复制 Google 表格电子表格(事件)后,如何保存 URL?

问题描述 投票:0回答:1

概述:我有一个包含多个选项卡的 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;

}

虚拟电子表格

google-sheets google-apps-script
1个回答
0
投票

由于特定工作表 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() 添加到脚本末尾,或者在设置所需的变量之后的某个时刻。

© www.soinside.com 2019 - 2024. All rights reserved.