Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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
Javascript 函数未使用定义的变量执行_Javascript_Google Apps Script - Fatal编程技术网

Javascript 函数未使用定义的变量执行

Javascript 函数未使用定义的变量执行,javascript,google-apps-script,Javascript,Google Apps Script,该项目的要点是:我有一个谷歌表单答案,可以在谷歌文档中填充,让我们称这个文档为模板。模板已复制,因此我不会覆盖原始模板。该副本将转换为PDF,发送到电子邮件,并移动到我驱动器上的特定文件夹。此功能在每次表单提交时都会完美地执行,并在提交时触发。我的下一个功能应该是将复制的文档发送到我的Google Cloud Print,但我在编写代码时遇到了麻烦。我已经到了可以在表单提交时打印文档的地步,但是我必须明确定义文档的ID。不幸的是,ID不是静态的,因为每次提交都会生成一个新的文档。这是我的完整代码

该项目的要点是:我有一个谷歌表单答案,可以在谷歌文档中填充,让我们称这个文档为模板。模板已复制,因此我不会覆盖原始模板。该副本将转换为PDF,发送到电子邮件,并移动到我驱动器上的特定文件夹。此功能在每次表单提交时都会完美地执行,并在提交时触发。我的下一个功能应该是将复制的文档发送到我的Google Cloud Print,但我在编写代码时遇到了麻烦。我已经到了可以在表单提交时打印文档的地步,但是我必须明确定义文档的ID。不幸的是,ID不是静态的,因为每次提交都会生成一个新的文档。这是我的完整代码,不包括任何敏感信息:

//工单
//从谷歌文档中获取模板并命名
var docTemplate=“”;//**替换为模板ID***
var docName=“工单”;
函数addDates(){
var date=new date();//表单日期
var假日=[“2017年4月9日”、“2017年9月10日”、“2017年11月23日”、“2017年12月24日”、“2017年12月25日”、“2018年1月1日”];//以MM/dd/yyyy定义假日日期
var days=5;//要添加的天数
date.setDate(date.getDate());
var计数器=0;
如果(天数>0){
同时(计数器<天){
date.setDate(date.getDate()+1);
var check=date.getDay();
var holidayCheck=holiday.indexOf(Utilities.formatDate(日期,“EDT”,“MM/dd/yyyy”);
如果(检查!=0&&check!=6&&holidayCheck==-1){
计数器++;
}
}
}
Logger.log(date)//本例将给出2017年8月16日
返回日期;
}
函数createNewDoc(值){
//从表单中获取信息并设置为变量
var email_address=“”;
var job_name=值[1];
var ship_to=数值[11];
var地址=值[12];
var order_count=数值[7];
var程序=数值[2];
var工作空间=值[3];
var报价=价值[4];
var sort_1=值[5];
var sort_2=值[6];
var image_services=值[9];
var print_services=值[10];
var优先级=数值[13];
var注释=数值[14];
var formattedDate=Utilities.formattdate(新日期(),“EDT”,“MM/dd/yyyy”);
var expirationDate=Utilities.formatDate(addDates(),“EDT”,“MM/dd/yyyy”);
//获取文档模板,将其复制为新的临时文档,并保存文档的id
var copyId=DriveApp.getFileById(docTemplate)
.makeCopy(docName+'表示'+作业名称)
.getId();
//打开临时文档
var copyDoc=DocumentApp.openById(copyId);
//获取文档的正文部分
var copyBody=copyDoc.getActiveSection();
//替换谷歌文档模板中的占位符键
copyBody.replaceText('keyJobName',job\u name);
copyBody.replaceText('keyShipTo',ship_to');
copyBody.replaceText('keyAddress',address);
replaceText('keyOrderCount',order\u count);
copyBody.replaceText('keyProgram',program);
replaceText('keyWorkspace',workspace);
copyBody.replaceText('keyOffer',offer);
copyBody.replaceText('keySort1',sort_1);
copyBody.replaceText('keySort2',sort_2);
copyBody.replaceText('keymageservices',image\u services);
copyBody.replaceText(“keyPrintServices”,打印服务);
copyBody.replaceText('keyPriority',priority);
copyBody.replaceText('注释记号');
copyBody.replaceText('keyDate',formattedDate);
copyBody.replaceText('keyDue',expirationDate);
//保存并关闭临时文档
copyDoc.saveAndClose();
//使用getAs blob转换将临时文档转换为PDF
var pdf=DriveApp.getFileById(copyId.getAs(“application/pdf”);
//附上PDF并发送电子邮件
var subject=“新职务提交”;
var body=“这是“+job_name+”的工单;
MailApp.sendEmail(电子邮件地址、主题、正文、{
htmlBody:body,
附件:pdf
});
//将文件移动到文件夹
var file=DriveApp.getFileById(copyId);
DriveApp.getFolderById(“”.addFile(文件);
file.getParents().next().removeFile(文件);
}
函数printGoogleDocument(copyId,docName){
//有关票证选项的说明,请参阅https://developers.google.com/cloud-print/docs/cdd?hl=en
var票证={
版本:“1.0”,
打印:{
颜色:{
类型:“标准颜色”
},
双工:{
类型:“无双工”
},
}
};
var有效载荷={
“printerid”:“打印文件”,
“内容”:copyId,
“标题”:文件名,
“contentType”:“google.kix”,//允许您打印谷歌文档
“票证”:JSON.stringify(票证),
};
var response=UrlFetchApp.fetch('https://www.google.com/cloudprint/submit', {
方法:“张贴”,
有效载荷:有效载荷,
标题:{
授权:“承载者”+GoogleCloudPrint.getCloudPrintService().getAccessToken()
},
“muteHttpExceptions”:true
});
//如果成功,应在此处显示作业:https://www.google.com/cloudprint/#jobs
response=JSON.parse(response);
if(response.success){
Logger.log(“%s”,response.message);
}否则{
Logger.log(“错误代码:%s%s”,response.errorCode,response.message);
}
返回响应;
}
//当表格提交时
函数onFormSubmit(e){
var值=e.值;
createNewDoc(值);
printGoogleDocument(copyId、docName);

}
从“createNewDoc(值);”返回新文档函数,将其添加到createNewDoc()函数的末尾,右括号之前:

//Starting at the code here
// Move file to folder
var file = DriveApp.getFileById(copyId);
DriveApp.getFolderById("").addFile(file);
file.getParents().next().removeFile(file);

//Add this
var newDocName = docName + ' for ' + job_name;
return [file, newDocName];
//To this point
}

然后更改onFormSubmit()函数,如下所示:

// When Form Gets submitted
function onFormSubmit(e) {
  var values = e.values;
  var returnedDocValues = createNewDoc(values);
  var file = returnedDocValues[0];
  var docName= returnedDocValues[1];
  printGoogleDocument(file, docName);
}

如果有错误,请告诉我,因为我没有亲自测试此代码。

从“createNewDoc(values);”返回新文档函数,将其添加到createNewDoc()函数的末尾,右括号之前:

//Starting at the code here
// Move file to folder
var file = DriveApp.getFileById(copyId);
DriveApp.getFolderById("").addFile(file);
file.getParents().next().removeFile(file);

//Add this
var newDocName = docName + ' for ' + job_name;
return [file, newDocName];
//To this point
}

然后更改onFormSubmit()函数,如下所示:

// When Form Gets submitted
function onFormSubmit(e) {
  var values = e.values;
  var returnedDocValues = createNewDoc(values);
  var file = returnedDocValues[0];
  var docName= returnedDocValues[1];
  printGoogleDocument(file, docName);
}

如果有错误,请告诉我,因为我没有亲自测试此代码。

我认为我们非常接近。一切正常,但仍无法将文件发送到打印机。