Google apps script 如何在Google应用程序脚本的电子邮件中嵌入Google表单

Google apps script 如何在Google应用程序脚本的电子邮件中嵌入Google表单,google-apps-script,google-oauth,google-forms,Google Apps Script,Google Oauth,Google Forms,我有一个表单,需要登录,我正试图获取它的html嵌入到电子邮件中。与问题相似 然而,URLFetchApp似乎没有正确的OAuth配置,我总是得到Google登录页面的HTML 有没有办法设置正确的OAuth参数来获取表单HTML?您的问题询问了允许UrlFetch()获取设置了requiresLogin()的表单的HTML内容所需的OAuth参数。这个答案并没有直接解决这个问题 不需要OAuth,您可以简单地更改表单的登录要求,只需要足够长的时间就可以从表单中获取HTML。在很短的一段时间内,

我有一个表单,需要登录,我正试图获取它的html嵌入到电子邮件中。与问题相似

然而,URLFetchApp似乎没有正确的OAuth配置,我总是得到Google登录页面的HTML


有没有办法设置正确的OAuth参数来获取表单HTML?

您的问题询问了允许
UrlFetch()
获取设置了
requiresLogin()
的表单的HTML内容所需的OAuth参数。这个答案并没有直接解决这个问题

不需要OAuth,您可以简单地更改表单的登录要求,只需要足够长的时间就可以从表单中获取HTML。在很短的一段时间内,您的域外的个人可能会访问您的表单,如果他们碰巧有URL,并在您再次锁定表单之前快速填写表单以提交他们的响应

剧本 无论是否设置了
requiresLogin()
,以下
sendForm()
函数都适用于消费者和GApps域帐户

/**
*以HTML格式向用户发送包含给定表单的电子邮件。
*
*@param{Form}Form对象。
*@param{String}电子邮件一个或多个电子邮件地址,逗号分隔。
*/
函数sendForm(表单、电子邮件){
var url=form.getPublishedUrl();
//暂时禁用requiresLogin,以便UrlFetch将运行
if(form.requiresLogin()){
var requiresLogin=true;
form.setRequireLogin(假);
}
//获取表单的HTML
var response=UrlFetchApp.fetch(url);
var htmlBody=HtmlService.createHtmlOutput(response.getContent();
//如有必要,重新启用requireLogin
如果(要求登录){
form.setRequireLogin(true);
}
var subject=form.getTitle();
MailApp.sendEmail(电子邮件,
主题,,
“此邮件需要HTML支持才能查看。”,
{
名称:“表单电子邮件程序脚本”,
htmlBody:htmlBody
});
}
为了完整性,这里有一个测试函数

功能测试\u sendForm(){
//为测试构建新表单
var form=FormApp.create(“新表单”);
var formTitle='表单名称';
form.setTitle(formTitle)
.setDescription('表格说明')
.setConfirmationMessage('感谢您的响应!')
.SetAllowResponsedits(真)
.setAcceptingResponses(真)
//需要登录(仅适用于GApp域帐户)
试试{
form.setRequireLogin(true);
}捕获(e){
//消费者帐户应出现错误-继续。
}
//只有一个问题
form.addTextItem().setTitle(“Q1”);
//把它寄给赛尔夫
var email=Session.getEffectiveUser().getEmail();
发送表单(表单、电子邮件)
}
var form = FormApp.create('New Form');
form.setRequireLogin(true);
...
var url = form.getPublishedUrl();
var response = UrlFetchApp.fetch(url);
var htmlBody = HtmlService.createHtmlOutput(response).getContent();
    MailApp.sendEmail({
    to: email,
    subject: subject,
    htmlBody: htmlBody,
  });
...