If statement 如何使用if语句运行第二个函数Google脚本
我正在尝试加速我的脚本,现在我已经设置好了,这样在一个按钮上点击一个自定义对话框(HTML)就会出现,询问一些问题。在提交时,它调用一个gs函数将信息作为变量拉回来。根据第一个答案,我有一系列触发的If语句。他们每个人拿出一个不同的模板,制作一个副本,填充一些单元格,通过电子邮件发送给你,然后将数据转储到一个跟踪器中。它们都是不同的,所以脚本相当长——有没有办法让每个if语句都有自己的功能?这会有助于提高速度吗?我是一个新的脚本,所以任何反馈是感激的。下面是代码和HTMLIf statement 如何使用if语句运行第二个函数Google脚本,if-statement,google-apps-script,If Statement,Google Apps Script,我正在尝试加速我的脚本,现在我已经设置好了,这样在一个按钮上点击一个自定义对话框(HTML)就会出现,询问一些问题。在提交时,它调用一个gs函数将信息作为变量拉回来。根据第一个答案,我有一系列触发的If语句。他们每个人拿出一个不同的模板,制作一个副本,填充一些单元格,通过电子邮件发送给你,然后将数据转储到一个跟踪器中。它们都是不同的,所以脚本相当长——有没有办法让每个if语句都有自己的功能?这会有助于提高速度吗?我是一个新的脚本,所以任何反馈是感激的。下面是代码和HTML function on
function onOpen()//在按钮不工作的情况下将选项添加到顶行。
{
var ui=SpreadsheetApp.getUi();
ui.createMenu(“创建文档”)
.addItem('Create Tracked Document','addItem')
.addToUi();
}
函数addItem()//启动启动过程
{
var html=HtmlService.createTemplateFromFile('form')
.评估()
.setWidth(300)
.设置高度(550);
SpreadsheetApp.getUi()
.showModalDialog(html,“创建新文档”);
}
函数addNewItem(表单\数据)//从表单中提取数据
{
var ui=SpreadsheetApp.getUi();
var sheet=SpreadsheetApp.getActive().getSheetByName('Sheet1');
var n=新日期();
var now=((n.getMonth()+1)+“/”+n.getDate()+“/”+n.getFullYear());
var doctyp=表单\数据。文档\类型;
var name=form_data.name;
var title=表格_data.title;
var平台=form_data.platform;
var area=表格\数据区域;
var rota=形式_数据旋转;
var works=表单_data.WorkSt;
var recipient=Session.getEffectiveUser().getEmail();
if(form_data.Document_Type==“Text2”){
var dumpfolder=DriveApp.getFolderById(“12345”)
var templateSheet=DriveApp.getFileById(“67890”);
var Newform2=templateSheet.makeCopy(title+“”+now,dumpfolder);
var qs=电子表格应用程序打开(新表单2);
var dropSheet=qs.getSheetByName(“空白”);
var URL3=Newform2.getUrl();
dropSheet.getRange(“i8”).setValue(标题);
dropSheet.getRange(“bc5”).setValue(现在);
dropSheet.getRange(“b5”).setValue(平台);
dropSheet.getRange(“p5”).setValue(区域);
dropSheet.getRange(“x5”).setValue(rota);
dropSheet.getRange(“al5”).setValue(工程);
dropSheet.getRange(“at6”).setValue(名称);
NewOPLPOA.setSharing(DriveApp.Access.DOMAIN、DriveApp.Permission.COMMENT);
NewOPLPOA.setOwner(“我”);
sheet.appendRow([now,doctyp,name,title,platform,area,rota,works,URL3]);
GmailApp.sendmail(收件人,标题+“已创建。”,“您的文档已创建。”+'\n'+“这是指向您的副本的链接!链接:“+URL3”);
ui.alert(“已发送电子邮件”,“已使用文档链接发送电子邮件”。您也可以使用下面的链接查看文档,单击ctrl C进行复制\
“+URL3,ui.ButtonSet.OK);
}
else if(form_data.Document_Type==“Text1”){
var dumpfolder=DriveApp.getFolderById(“abcd”)
var templateSheet=DriveApp.getFileById(“bgtrd”);
var Newform1=templateSheet.makeCopy(title+“”+now,dumpfolder);
var qs=电子表格应用程序打开(新表单1);
var dropSheet=qs.getSheetByName(“DOC1”);
var URL4=Newform1.getUrl();
dropSheet.getRange(“aa3”).setValue(平台);
dropSheet.getRange(“ah3”).setValue(区域);
dropSheet.getRange(“ao3”).setValue(工程);
NewSEWO.setSharing(DriveApp.Access.DOMAIN、DriveApp.Permission.COMMENT);
NewSEWO.setOwner(“我”);
sheet.appendRow([now,doctyp,name,title,platform,area,rota,works,URL4]);
GmailApp.sendmail(收件人,标题+“已创建。”,“您的文档已创建。”+'\n'+“这是指向您的副本的链接!链接:“+URL4”);
ui.alert(“已发送电子邮件”,“已使用文档链接发送电子邮件”。您也可以使用下面的链接查看文档,单击ctrl C进行复制\
“+URL4,ui.ButtonSet.OK);
}
否则{
警告(“错误,请重试,确保您列出了所有必需的信息。”);
}
}
--HTML--
文件类型
--选择一个选项--
你的名字
--选择一个选项--
站台
--选择一个选项--
地区
--选择一个选项--
轮换
--选择一个选项--
工作站
标题
提交
document.querySelector(“myform”).addEventListener(“提交”,
职能(e)
{
e、 preventDefault();//停止表单提交
google.script.run.addNewItem(this);
google.script.host.close();//关闭此对话框
}
);
有没有办法让每个if语句都有自己的功能?
出于可见性的目的,您当然可以根据需要修改代码
function addNewItem(form_data)//pulls data from form
{
var ui = SpreadsheetApp.getUi();
var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
var n = new Date();
var now = ((n.getMonth()+1) + "/" + n.getDate() + "/" + n.getFullYear());
var doctyp = form_data.Document_Type;
var name = form_data.Name;
var title = form_data.Title;
var platform = form_data.Platform;
var area = form_data.Area;
var rota = form_data.Rotation;
var works = form_data.WorkSt;
var recipient = Session.getEffectiveUser().getEmail();
if (form_data.Document_Type == "Text2"){
function1();
}
else if (form_data.Document_Type == "Text1"){
function2();
}
else{
ui.alert("Error, Please try again, make sure you are listing all required information.");
}
function function1(){
var dumpfolder = DriveApp.getFolderById("12345")
var templateSheet = DriveApp.getFileById("67890");
...
}
function function2(){
var dumpfolder = DriveApp.getFolderById("abcd")
...
}
这会有助于提高速度吗?
不是真的。为了加快速度,您应该尝试实施
特别是:减少对外部服务的重复呼叫,包括SpreadsheetApp
例如,尝试将要为其赋值的单元格定位到相邻区域中,这样可以使用方法setValues()
而不是多个setValue()
,从而使代码更高效
样本:
var range = dropSheet.getRange("I8:N8");
var values = [];
values[0] = [];
values[0].push(title, now, platform, area, rota, works, name);
range.setValues(values);
此外,尽量避免对每个if
条件重复相同的请求,而是在退出if
语句后发出单个请求,例如:
sheet.appendRow([now,doctyp,name,title,platform,area,rota,works,URL3]);
GmailApp.sendEmail(recipient, title+ " has been created.", "Your document has been created." +'\n'+ "Here is the link to your copy! Link: " + URL3);
ui.alert("Email Sent", "An email has been sent with your documents link. You can also use the below link to view the document now, click ctrl C to copy. \
" + URL3, ui.ButtonSet.OK);
我希望这有帮助 有没有办法让每个if语句都有自己的功能?
出于可见性的目的,您当然可以根据需要修改代码
function addNewItem(form_data)//pulls data from form
{
var ui = SpreadsheetApp.getUi();
var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
var n = new Date();
var now = ((n.getMonth()+1) + "/" + n.getDate() + "/" + n.getFullYear());
var doctyp = form_data.Document_Type;
var name = form_data.Name;
var title = form_data.Title;
var platform = form_data.Platform;
var area = form_data.Area;
var rota = form_data.Rotation;
var works = form_data.WorkSt;
var recipient = Session.getEffectiveUser().getEmail();
if (form_data.Document_Type == "Text2"){
function1();
}
else if (form_data.Document_Type == "Text1"){
function2();
}
else{
ui.alert("Error, Please try again, make sure you are listing all required information.");
}
function function1(){
var dumpfolder = DriveApp.getFolderById("12345")
var templateSheet = DriveApp.getFileById("67890");
...
}
function function2(){
var dumpfolder = DriveApp.getFolderById("abcd")
...
}
这会有助于提高速度吗?
不是真的。为了加快速度,您应该尝试实施
在