如何使用Google Apps脚本将电子表格标题和最后一行的值导出到csv文件中

问题描述 投票:0回答:1

我是新来的,请尝试寻求一些专业知识来帮助创建google apps脚本。

我有一个电子表格,并希望将标题和新添加的行值导出到csv文件,并将其保存到本地c驱动器中,并以B列值作为主题发送警报电子邮件。

例如电子表格有14列,我想从第2列开始将csv导出为以下值:“ column2值; column3值; column4值; column5值; column6值; ..... column14值”

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

因此,每当人们在Google表单中填写该值并按Submit时,我都会在Google工作表中收到一个新的行值。然后,我将标题和最新行值导出到csv文件到本地c驱动器中,并以B列值作为主题发送警报电子邮件。

非常感谢一些专业知识可以帮助我。非常感谢:)

spreadsheet value needed highlighted in yellow

Excel sample.xlsx

google-apps-script export-to-csv spreadsheet google-form
1个回答
0
投票

我尝试一下,看看是否有帮助:

我们假设您的电子表格配置如下:

您有一个名为回复的提交表>

您有一个名为Temp

的脚本所需的帮助表,该脚本的第一行标题与“响应”表的标题相同

enter image description here

在下面的示例中,您希望将标题(橙色)和最后提交的行(绿色)保存为CSV文件,>

enter image description here

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

电子表格ID

收件人的电子邮件地址

代码:

// 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");

  // Get values of the last Row submitted

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


  //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 Title = subject.getValues();


  //Change Email Recipient underneath

  GmailApp.sendEmail('[email protected]',
                     'Job ID: '+Title, 
                     'Hi there, A new entry has been submitted, please find the details in the attached CSV file' ,
                     {
                         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');

}

电子邮件将发送到脚本中的定义收件人,其中subject

是B列中最后一行的值,如下所示:

enter image description here

<< [CSV文件

将被附加(您也可以将其下载到桌面):enter image description here

从打开电子表格时创建的

CSV文件菜单

enter image description here

保存文件

到本地桌面:enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.