从电子表格绑定表单中获取表单网址 [英] get form URL from a spreadsheet bound Form
问题描述
在电子表格脚本中,我希望向用户发送邮件,这些邮件将指向他们输入数据的表单的URL。我曾尝试过:
pre $ function test1(){
var formID = FormApp.getActiveForm();
var formUrl = DriveApp.getUrl(formID);
sendMail(formUrl);
return
}
失败是因为formID的值为全空值。
因为您在电子表格中工作,所以您需要从Spreadsheet对象中获取关联的表单(例如SpreadsheetApp.getActiveSpreadsheet。
您还需要发送带有htmlBody可选参数的邮件消息。
这是一个代码sniplet:
pre $ function sendNotice(recipient){
try {
//在
下面硬编码文件夹ID var formStorageFolderId ='';
//或以编程方式从电子表格父级获取文件夹
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssFolder = DriveApp.getFileById(ss.getId())。getParents();
if(ssFolder.hasNext()){
//假设只有一个父文件夹
formStorageFolderId = ssFolder.next()。getId();
}
var formFolder = DriveApp.getFolderById(formStorageFolderId);
var files = DriveApp.getFilesByType(MimeType.GOOGLE_FORMS);
var formId ='';
while(files.hasNext()){
//搜索表单(是否与电子表格名称相同?)
var file = files.next();
var fileName = file.getName();
var sheetName = ss.getName();
if(fileName == sheetName){
//匹配的名字
formId = file.getId();
休息;
if(formId){
var actualForm = FormApp.openById(formId);
var formName = actualForm.getTitle();
var formURL = actualForm.getPublishedUrl();
var subject =请填写表格;
// html邮件(链接需要
var mailBody ='< div>< p>请填写附件表格< p>;
mailBody + ='< ; p>< a href ='+ formURL +'>'+ formName +'< / a>';
MailApp.sendEmail(recipient,subject,'',{htmlBody :mailBody});
}
} catch(err){
Logger.log(err.lineNumber +' - '+ err);
}
}
In a spreadsheet script I want to send mail to users that will point them to the URL of a form that will let them enter data. I have tried:
function test1(){
var formID = FormApp.getActiveForm();
var formUrl = DriveApp.getUrl(formID);
sendMail(formUrl);
return
}
This fails because the value of formID is allways NULL.
Because you are working in the Spreadsheet, you need to get the associated form from the Spreadsheet object (e.g. SpreadsheetApp.getActiveSpreadsheet.getFormUrl() ).
You will also need to send the mail message with the htmlBody optional parameter.
Here is a code sniplet:
function sendNotice(recipient){
try{
// either hardcode the folder id below
var formStorageFolderId = '';
// or programmatically get the folder from the spreadsheet parent
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssFolder = DriveApp.getFileById(ss.getId()).getParents();
if(ssFolder.hasNext()){
// assume there is only one parent folder
formStorageFolderId = ssFolder.next().getId();
}
var formFolder = DriveApp.getFolderById(formStorageFolderId);
var files = DriveApp.getFilesByType(MimeType.GOOGLE_FORMS);
var formId = '';
while(files.hasNext()){
// search for the form (is it the same name as the spreadsheet?)
var file = files.next();
var fileName = file.getName();
var sheetName = ss.getName();
if(fileName == sheetName){
// matched names
formId = file.getId();
break;
}
}
if(formId){
var actualForm = FormApp.openById(formId);
var formName = actualForm.getTitle();
var formURL = actualForm.getPublishedUrl();
var subject = "Please fill out form";
// html mail message (needed for the link
var mailBody = '<div><p>Please fill out the attached form<p>';
mailBody += '<p><a href="' + formURL +'">' + formName + '</a>';
MailApp.sendEmail(recipient, subject, '',{htmlBody:mailBody});
}
}catch(err){
Logger.log(err.lineNumber + ' - ' + err);
}
}
这篇关于从电子表格绑定表单中获取表单网址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!