当前位置: 首页 > 知识库问答 >
问题:

在Google Apps脚本中按文件ID发送文件

万俟光临
2023-03-14

我正在使用Google Sheets在Google Drive中存储文件名列表,它们各自的文件ID。我正在使用同一工作簿中的另一个工作表记录电子邮件地址和要发送这些电子邮件地址的文件名。

    null
    null

我想通过从数据表中查找该文件名的相应文件ID来获取请求表中提到的文件名。一旦文件被提取,我想将该文件作为附件发送到请求表中提到的电子邮件地址。我想对请求表中的每一行都这样做。

我创建了一个名为doctemplate的HTML文件来构成电子邮件的正文。

我已经在Google Sheets的脚本编辑器中编写了下面的代码。运行时,会触发一个邮件,但它不包含附件,也不包含HTML文件的内容。邮件正文只读[object object]

function sendfile(){
  
  var request = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Request");
  var data = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
  
  var Avals = request.getRange("A1:A").getValues();
  var requestlastrow = Avals.filter(String).length;
  var Avalsu = data.getRange("A1:A").getValues();
  var datalastrow = Avalsu.filter(String).length;
  
  
  for (var i=2;i<= requestlastrow;i++) {

    var control = request.getRange(i,6).getValue();
    
    if(control != 1){
      
      
      var FilenameRequest = request.getRange(i,1).getValue();

      
      for (var j=2;j<= datalastrow;j++) {
      
        var FilenameData = upload.getRange(j,1).getValue();
        
        if(FilenameRequest == FilenameData) {
        
          /// to get the File ID
          var FileID = data.getRange(j,2).getValue();
          var file = DriveApp.getFileById(FileID);
          
  
          
          /// to form the email
          var values = request.getRange(i,1,1,2).getValues();
          var rec = values[0];
          var client = 
              {
                email: rec[1],
                name: rec[0]
              };
          
          client.subject = 'Request Filename:' + client.name;
      
          var template = HtmlService
          .createTemplateFromFile("DocTemplate.html");
          template.client = client;
          var message = template.evaluate().getContent();
  
          MailApp.sendEmail(client.email,client.subject,{
            htmlBody: message,
            attachments: [file.getAs(MimeType.PDF)]
          });
          
          request.getRange(i,6).setValue("1");
        }
      }
    }
  }
}

共有1个答案

殷宇
2023-03-14

由于这不是一个可复制的示例,所以我只能假设除了以下内容之外,其余代码都可以工作:

MailApp.sendEmail(client.email,client.subject,{
            htmlBody: message,
            attachments: [file.getAs(MimeType.PDF)]
          });

它还应包含消息参数:

MailApp.sendEmail(client.email,client.subject,message,{
            htmlBody: message,
            attachments: [file.getAs(MimeType.PDF)]
          });
 类似资料:
  • 问题内容: 有没有一种方法可以使用Python脚本中的POST发送文件? 问题答案: 通过请求,上传Multipart编码的文件非常简单: 而已。我不是在开玩笑-这是一行代码。文件已发送。让我们检查:

  • 问题内容: 我不知道在Flash或Actionscript中进行编程。实际上,我是一名Java EE开发人员。 在Flash文件中,我有以下方法: 此方法会将录制的声音保存到我们将指定的文件夹中的“ recording.wav”中。 我想要做的是通过将录制的声音发送到Java Servlet来更改保存到磁盘的内容。 我找到了这段代码,但是我不知道如何在HTTP请求中发送的params中插入reco

  • 问题内容: 我在Win XP上运行Python 3.2。我通过以下方式通过批处理文件运行python脚本: 是我传递来在python脚本中进行一些处理的参数。 我在批处理文件中有两个变量,我也想将它们作为参数发送到python脚本。 我希望能够做这样的事情: 然后通过和在python脚本中检索这些参数 希望对此有所帮助。谢谢。 问题答案: your_script.bat:

  • 要创建 NSIS 安装程序,首先要写一个 NSIS 脚本。NSIS 脚本仅仅是一个包含了特殊语法的文本文件,你可以用任何的文本编辑器来编辑。推荐使用可以显示行数的文本编辑器,因为当发生错误时 NSIS 使用行数来指出错误所在。更推荐使用带有语法高亮显示的编辑器,你可以在 NSIS Wiki 下载到。 在 NSIS 脚本里每一行都作为一个命令处理,如果这一行太长的话你可以使用“\”来分隔,编译器会自

  • #include <stdio.h> typedef struct { int a; int b; int c; int d; }ex_st; int main(void) { ex_st st = {1, 2, 3, 4}; printf("%d,%d,%d,%d\n", st.a, st.b,

  • 我正在使用两个版本的ROS,彼此相邻。要使用它,我必须为特定版本提供一些环境变量。我想创建一个脚本来实现这一点。但是如果我创建一个如下的脚本,变量没有设置,它们可能是在子shell中设置的。如何将文件源文件发送到主终端外壳? source.sh: 以下是我如何调用source。上海: 更新:通过采购来源。正如答案中所建议的那样,我现在可以看到正在设置的变量。