如何使用 Google 应用程序脚本将电子表格 header 和最后一行值导出到 csv 文件

How to export spreadsheet header and last row value to csv file using Google apps script

我是新来的,想寻求一些专业知识来帮助创建 google 应用程序脚本。

我有一个点差sheet,我想将 header 和新添加的行值导出到 csv 文件并将其保存到我的本地 C 盘并发送一封包含 B 列值的警报电子邮件作为主题。

例如。 spreadsheets 有 14 列,我想从第 2 列开始导出到 csv,其值如下:"column2 value; column3 value; column4 value; column5 value; column6 value; .....column14 value "

下面是我描述的工作流程:

所以每次当人们在 google 表单中填写值并按下提交时,我都会在 google sheet 中收到一个新的行值。然后我将 header 和最新的行值导出到 csv 文件到我的本地 c 驱动器中,并发送一封以 B 列值作为主题的警报电子邮件。

如果有一些专业知识可以帮助我,我将不胜感激。太感谢了。 :)

Excel sample.xlsx

看看这是否对你有帮助:

我们假设您的价差sheet配置如下:

  • 您有一个 sheet 供提交,名为 Responses
  • 你有一个助手 sheet 需要一个名为 Temp 的脚本,它有 第一行中的 headers 与响应 sheet
  • 相同

在下面的示例中,您想将 headers(橙色)连同提交的最后一行(绿色)保存为 CSV 文件

当您访问脚本时,您将更改以下内容:

  • 整个文档的Spreadsheet ID
  • 选项卡的ID Temp(在edit#gid=之后找到的数字)
  • 收件人的电子邮件地址

代码:

// Example: https://docs.google.com/spreadsheets/d/1kXaTto1ktqX0XNKQ035897FGX5tV75o7wuYHiNCOqEFfI/edit#gid=1269457815
  // In this link the ID of the Spreadsheet is everything after /d/
  // which is: 1kXaTto1ktqX0XNKQ035897FGX5tV75o7wuYHiNCOqEFfI
  // THE ID of the sheet Temp would be something like: 1269457815

// ---------- Menu ----------
function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('CSV File')
  .addItem('Step 1: Email CSV', 'EmailRange')
  .addItem('Step 2: Save CSV file', 'showurl')
  .addToUi();
}



// Choose how do want to export the: csv,pdf,xlsx

EXPORT_TYPE="csv";

function EmailRange() {



  // Enter Sheet ID in between ""

  var sheetId = "ID GOES HERE";
  var ss = SpreadsheetApp.openById(sheetId);
  var sheet=ss.getSheetByName("Responses");

  // You can set up the headers beforehand
  var temp = ss.getSheetByName("Temp");


  //Copy range onto Temp sheet

  var rangeToCopy = sheet.getRange("A"+(ss.getLastRow())+":N"+(ss.getLastRow()));

  // It will erase any previous data

  rangeToCopy.copyTo(temp.getRange(2, 1));


  // Temporarily hide the sheet

  ss.getSheetByName('Responses').hideSheet()


  //Authentification 
  var params = {method:"GET",headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};

  var url="https://docs.google.com/spreadsheets/d/"+ss.getId()+"/export?format="+EXPORT_TYPE;

  //Fetch URL of active spreadsheet
  var fetch=UrlFetchApp.fetch(url,params);

  //Get content as blob
  var blob=fetch.getBlob(); 

  var mimetype;
  if(EXPORT_TYPE=="pdf"){
    mimetype="application/pdf";      
  }else if(EXPORT_TYPE=="csv"){
    mimetype="text/csv";    
  }else if(EXPORT_TYPE=="xlsx"){
    mimetype="application/xlsx";   
  }else{
    return;
  }

  // OP: send an alert email with column B value as a subject



    var subject = sheet.getRange("B"+(ss.getLastRow()));
  var timestamp = sheet.getRange("A"+(ss.getLastRow()));
  var Title = subject.getValues();
  var signature = timestamp.getValues();


  //Change Email Recipient underneath

  GmailApp.sendEmail('s.nabil@arrowad.sch.sa',
                     'Job ID: '+Title, 
                     'Hi there,' + '\n\n' +  'A new entry has been submitted, please find the details in the attached CSV file.'  + '\n\n' +  'Submitted on: '+signature,
                     {
                         attachments: [{
                         fileName: Title + "."+EXPORT_TYPE,
                         content: blob.getBytes(),
                         mimeType: mimetype
                      }]
    });

//Reshow Response sheet

  ss.getSheetByName('Responses').showSheet()

}

function showurl() {

  // Enter Spreadsheet ID after d/ and the TAB ID of Temp after gid=


  var htmlOutput = HtmlService
  .createHtmlOutput('Click here <a href="https://docs.google.com/spreadsheets/d/ID GOES HERE/export?format=csv&gid=TAB ID GOES HERE">My File</a> to download')
  .setWidth(250) //optional
  .setHeight(50); //optional
  SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Download CSV File');

}

第 1 步: 向脚本中定义的收件人发送电子邮件,主题 是列中最后一行的值B、签名提交日期&时间,像这样:

CSV 文件 将附加到电子邮件中:

第 2 步: 从打开跨页时创建的 CSV 文件菜单

将文件保存到您的本地桌面: