首页 > 解决方案 > 谷歌脚本到电子邮件链接到作为先前脚本的结果保存的工作表

问题描述

我有一个 Google 表单,它已连接到 Google 表格。

一旦新数据到达工作表,我就会设置一个触发器来将文件保存为由特定单元格命名的新文件(TestRange - 下面)。

我想向最近的电子邮件条目发送电子邮件。电子邮件应包含最近保存文件的 URL。

这个想法是,输入表单数据的用户会获得我为他们保存的工作表的特定副本。

这是我的代码:

function myFunction(){ 
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PQReport").activate();  
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var range = ss.getRange('PQData!C3');
    ss.setNamedRange('FileName', range);
    var TestRange = ss.getRangeByName('FileName').getValue();
    Logger.log(TestRange); 
    var destFolder = DriveApp.getFolderById("aswwed...askdjksjdffkjdkf");
    DriveApp.getFileById(ss.getId()).makeCopy(TestRange, destFolder); '
}

该文件保存为 中的单元格PQData!C3destFolder。我要使用的电子邮件地址是PQData!CV(第 48 列)的最后一行。如果有办法将最近保存的文件的 URL 保存到第 50 列,然后调用该列以获取电子邮件中的 URL,那将是理想的。

提前感谢您的帮助!

标签: google-apps-scriptgoogle-sheetsgoogle-sheets-api

解决方案


问题:

假设您要执行以下操作:

  • 从复制的文件中检索 URL DriveApp.getFileById(ss.getId()).makeCopy(TestRange, destFolder);
  • 将此 URL 保存到 sheet 的最后一行第 50 列PQData
  • 从 sheet 的最后一行第 48 列检索电子邮件地址PQData
  • 向此电子邮件地址发送一封电子邮件,其中包含文件的 URL。

解决方案:

function myFunction(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var pqDataSheet = ss.getSheetByName("PQData");
  var range = pqDataSheet.getRange('C3');
  ss.setNamedRange('FileName', range);
  var TestRange = ss.getRangeByName('FileName').getValue();
  var destFolder = DriveApp.getFolderById("aswwed...askdjksjdffkjdkf");
  var file = DriveApp.getFileById(ss.getId()).makeCopy(TestRange, destFolder);
  var url = file.getUrl();
  var lastRow = pqDataSheet.getLastRow();
  pqDataSheet.getRange(lastRow, 50).setValue(url);
  var email = pqDataSheet.getRange(lastRow, 48).getValue(); // Alternatively getRange("AV" + lastRow)
  MailApp.sendEmail(email, "MY SUBJECT", url);
}

笔记:

  • PQData!CV不是指第 48 列,而是指代AV。请注意这一点。
  • PQReport由于您没有在代码中使用它,因此我删除了提及,如有必要,请添加。
  • 为什么要设置一个命名范围并从该范围中获取一个值,而不是直接从中检索值C3

推荐阅读