【问题标题】:Google script to email link to sheet saved as a result of a previous script谷歌脚本到电子邮件链接到作为先前脚本的结果保存的工作表
【发布时间】:2021-04-12 23:37:13
【问题描述】:

我有一个 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!C3 的单元格值destFolder。 我要使用的电子邮件地址是 PQData!CV 的最后一行(第 48 列)。如果有办法将最近保存的文件的 URL 保存到第 50 列,然后调用该列以获取电子邮件中的 URL,那将是理想的。

提前感谢您的帮助!

【问题讨论】:

  • 您好,请尝试根据 Stackoverfolw 的格式化指南格式化问题。 stackoverflow.com/editing-help
  • 您要发送的文件的 URL 对应于在DriveApp.getFileById(ss.getId()).makeCopy(TestRange, destFolder); 中制作的副本?您的问题是如何发送包含该 URL 的电子邮件?
  • Daniel H - 明白了,下次会知道的。

标签: google-apps-script google-sheets google-sheets-api


【解决方案1】:

问题:

假设您要执行以下操作:

  • DriveApp.getFileById(ss.getId()).makeCopy(TestRange, destFolder);中复制的文件中检索URL。
  • 将此 URL 保存到工作表 PQData 的最后一行第 50 列。
  • 从工作表 PQData 的最后一行第 48 列检索电子邮件地址。
  • 向此电子邮件地址发送一封电子邮件,其中包含文件的 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 检索值?

【讨论】:

  • 这真的很有帮助,它完成了我需要它的大约 90% 的工作(感谢您清理代码),你没有错,它不是 100%!我在询问中没有很好地表达一件小事。通过“PQDataAV”的最后一行,我实际上的意思是我想搜索最近添加了数据的行,然后将 URL 添加到 AV 列,即该行。表单正在将新数据推送到 A-AU 列中,我想在表单中的数据填充后在 AV 中添加 URL。然后我想从同一行的第 48 列检索电子邮件地址。
  • 我能够使用一些额外的代码来解决这个问题,以找出添加数据的最后一行。非常感谢@lamblichus 的帮助。
  • @McP 如果数据是由正在提交的表单填充的,那么最后填充的行不是表格中包含内容的最后一行吗?无论如何,请考虑accepting this answer,因为它解决了您最初提出的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-04
  • 2017-07-31
  • 1970-01-01
  • 2015-10-26
  • 1970-01-01
相关资源
最近更新 更多