从电子表格绑定表单中获取表单网址 [英] get form URL from a spreadsheet bound Form

查看:109
本文介绍了从电子表格绑定表单中获取表单网址的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在电子表格脚本中,我希望向用户发送邮件,这些邮件将指向他们输入数据的表单的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆