Javascript Mailapp和以正确格式保存附件

Javascript Mailapp和以正确格式保存附件,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我是新来的,正在开发一个简单的功能,1.用新名称保存当前的电子表格,2。通过电子邮件将新命名文件的副本发送到电子邮件地址。我的代码可以正常工作,但我在使用MailApp以google sheets格式保存电子表格时遇到了问题。代码如下: function emailPayPeriod() { var Sheet=SpreadsheetApp.getActiveSpreadsheet(); var Peter=Sheet.getSheetByName("Peter&qu

我是新来的,正在开发一个简单的功能,1.用新名称保存当前的电子表格,2。通过电子邮件将新命名文件的副本发送到电子邮件地址。我的代码可以正常工作,但我在使用MailApp以google sheets格式保存电子表格时遇到了问题。代码如下:

    function emailPayPeriod() {
  

var Sheet=SpreadsheetApp.getActiveSpreadsheet(); 
var Peter=Sheet.getSheetByName("Peter");
var destFolder = DriveApp.getFolderById("424342423432523534");
var date =  Utilities.formatDate(new Date(Peter.getRange(2, 2,).getValue()),Sheet.getSpreadsheetTimeZone(),"MMM-dd-yyyy");
var file = DriveApp.getFileById("324kn24k23b4");
    //SavespreadsheetAs, Save pay periods on google drive based on pay period start name
           
DriveApp.getFileById("893y42ei3ubryu2").makeCopy(date,destFolder); 

//Send Google Sheets File via Email

MailApp.sendEmail("example@gmail.com",'Pay Period', "date",
{
  name: "Title", 
  attachments: [file]

});
}
当我收到带有附件的电子邮件时,它总是以.PDF格式。另一件事,我试图找出是如何拉文件ID从新创建的文件,并使用它在电子邮件功能,以确保我发送新命名的文件。非常感谢对我错误的任何指点。

修改点:
  • 在Google文档文件(文档、电子表格、幻灯片等)中,Google文档文件不能直接导出为相同的mimeType。需要通过转换为其他mimeType进行导出。因此,在您的情况下,需要将电子表格作为其他mimeType导出。例如,它们是PDF、XLSX、CSV等等
  • 而且,在当前阶段,当Google Docs文件作为电子邮件附件文件与DriveApp.getFileById一起发送时,mimeType会自动转换为PDF。这似乎是当前的规范
当上述各点反映到脚本中时,它将变成如下所示

模式1: 在此模式中,电子表格通过转换为XLSX数据发送。当这反映到脚本中时,它将变成如下所示

发件人: 致: 模式2: 在此模式中,电子表格作为编写者与用户共享。在这种情况下,用户可以编辑电子表格。当这反映到脚本中时,它将变成如下所示。在使用此脚本之前

发件人: 致: 注:
  • 关于你下面的第二个问题

    另一件事,我试图找出是如何拉文件ID从新创建的文件,并使用它在电子邮件功能,以确保我发送新命名的文件

    • 在这种情况下,您可以检索复制文件的文件ID,并使用以下脚本将文件ID添加到电子邮件中

        const fileId = DriveApp.getFileById("893y42ei3ubryu2").makeCopy(date,destFolder).getId();
        MailApp.sendEmail("example@gmail.com", 'Pay Period', "date" + "\n" + fileId, { name: "Title", attachments: [file] });
      
参考资料:
    • 导出到XLSX数据的端点来自“Files:get”方法

非常感谢您的详细解释!感谢您花时间向我这个初学者解释情况。@DataCrisis谢谢您的回复。欢迎我很高兴你的问题解决了。也谢谢你。
var spreadsheetId = "324kn24k23b4"; // Please set your Spreadsheet ID.
var url = "https://docs.google.com/spreadsheets/export?exportFormat=xlsx&id=" + spreadsheetId;
var file = UrlFetchApp.fetch(url, {headers: {authorization: "Bearer " + ScriptApp.getOAuthToken()}});
var file = DriveApp.getFileById("324kn24k23b4");
    //SavespreadsheetAs, Save pay periods on google drive based on pay period start name
           
DriveApp.getFileById("893y42ei3ubryu2").makeCopy(date,destFolder); 

//Send Google Sheets File via Email

MailApp.sendEmail("example@gmail.com",'Pay Period', "date",
{
  name: "Title", 
  attachments: [file]

});
var userEmail = "example@gmail.com";
var file = DriveApp.getFileById("324kn24k23b4");
Drive.Permissions.insert({role: "writer", type: "user", value: userEmail}, file.getId(), {sendNotificationEmails: false});
MailApp.sendEmail(userEmail, 'Pay Period', "date" + "\n" + file.getUrl(), { name: "Title" });
  const fileId = DriveApp.getFileById("893y42ei3ubryu2").makeCopy(date,destFolder).getId();
  MailApp.sendEmail("example@gmail.com", 'Pay Period', "date" + "\n" + fileId, { name: "Title", attachments: [file] });