Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement 如何使用if语句运行第二个函数Google脚本_If Statement_Google Apps Script - Fatal编程技术网

If statement 如何使用if语句运行第二个函数Google脚本

If statement 如何使用if语句运行第二个函数Google脚本,if-statement,google-apps-script,If Statement,Google Apps Script,我正在尝试加速我的脚本,现在我已经设置好了,这样在一个按钮上点击一个自定义对话框(HTML)就会出现,询问一些问题。在提交时,它调用一个gs函数将信息作为变量拉回来。根据第一个答案,我有一系列触发的If语句。他们每个人拿出一个不同的模板,制作一个副本,填充一些单元格,通过电子邮件发送给你,然后将数据转储到一个跟踪器中。它们都是不同的,所以脚本相当长——有没有办法让每个if语句都有自己的功能?这会有助于提高速度吗?我是一个新的脚本,所以任何反馈是感激的。下面是代码和HTML function on

我正在尝试加速我的脚本,现在我已经设置好了,这样在一个按钮上点击一个自定义对话框(HTML)就会出现,询问一些问题。在提交时,它调用一个gs函数将信息作为变量拉回来。根据第一个答案,我有一系列触发的If语句。他们每个人拿出一个不同的模板,制作一个副本,填充一些单元格,通过电子邮件发送给你,然后将数据转储到一个跟踪器中。它们都是不同的,所以脚本相当长——有没有办法让每个if语句都有自己的功能?这会有助于提高速度吗?我是一个新的脚本,所以任何反馈是感激的。下面是代码和HTML

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")
  ...
}
这会有助于提高速度吗? 不是真的。为了加快速度,您应该尝试实施