如何使用 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 列值作为主题的警报电子邮件。
如果有一些专业知识可以帮助我,我将不胜感激。太感谢了。 :)
看看这是否对你有帮助:
我们假设您的价差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 文件菜单:
将文件保存到您的本地桌面:
我是新来的,想寻求一些专业知识来帮助创建 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 列值作为主题的警报电子邮件。
如果有一些专业知识可以帮助我,我将不胜感激。太感谢了。 :)
看看这是否对你有帮助:
我们假设您的价差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 文件菜单:
将文件保存到您的本地桌面: