我正在创建将执行下述操作的脚本。到目前为止,我已经设法让前两个部分发挥作用,但现在我坚持让更多的工作。我已经查看了几个响应论坛并尝试了这些建议,但没有成功。
所需的脚本流程:从电子表格表单提交的表单完成字段:时间戳用户名(提交时收集的电子邮件)学生成绩干预计划核心阅读/数学团队(电子邮件列表)
1个脚本运行onFormSubmit,然后创建模板文档的副本,将新副本重命名为e.value“学生”以表单提交,
2 然后用表单中提交的值替换文档中选定的文本字符串。
3 将编辑器添加到新文档并发送带有所需说明的通知
4 创建活动(自提交日期起一周)活动详细信息包括说明和共享文档的链接,供团队成员完成输入,将活动邀请发送到电子邮件列表。
这是到目前为止的工作脚本。
function formSubmitValues(e) {
var timeStamp = e.values[0];
var userEmail = e.values[1];
var student = e.values[2];
var grade = e.values[3];
var conern = e.values[4];
var readingCore = e.values[5];
var mathCore = e.values[6];
var interventions = e.values[7];
var team = e.values[8].toString(); // "just to be sure"..Henrique says add .toString this allowed the replaceText part to work
//Makes copy of template document and renames
var tempID = ("1Rq0pDAnuGNfL6W3GB0ZuLeWM2uYzHpKzoyxoXlwjtgE") // use document ID from Template Document
var copyId = DocsList
.getFileById(tempID)
.makeCopy(student + " Initial Referral") // names new copy as student's name
.getId();
// trying to add editors to new document using email list generated in form submit value of "team"
DocsList.getFileById(copyId).addEditors([team]);
// replaces text within template with selected fields from formSubmitValues
var doc = DocumentApp.openById(copyId)
var body = doc.getActiveSection();
body.replaceText("%STUDENT%", student);
body.replaceText("%DATE%", timeStamp);
body.replaceText("%TEACHER%", userEmail);
body.replaceText("%TEAM%", team);
return doc;
}
报告的问题响应:这是他们所说的:“该函数需要一个数组或字符串,例如:DocsList.getFileById(copyId).addEditors(['parent@domain.com', 'parent2@domain.com']);
我尝试将电子邮件直接输入到这样的脚本中,并且一切正常。所以我的问题不是 'addEditors
方法,而是在于让表单提交的电子邮件正确传递。关于我将如何做到这一点的任何建议?
我已经尝试过我认为是使用 .toString() 或不使用 .Split(',') 的所有组合。
重新定义问题:所以这是一个如何从 e.values 表单提交中传递电子邮件的问题。
这是我所在的位置:当我直接在脚本中输入电子邮件时:.addEditors(['parent@domain.com', 'email2@domain.net', 'email3@gmail.com'])
它可以工作,(我确实必须将addEditors
脚本中的方法移到后面.makeCopy
而不是结尾。)这就是执行记录显示的内容:
File.addEditors([[parent@domain.com, email2@domain.net]])
它运行脚本的其余部分。注意:我不明白的一部分是单引号,即“电子邮件”它们必须在脚本中输入,但运行时不会显示在 Transcript 上。我尝试将它们放在表单中的电子邮件周围,但它使它们显示在 Transcript 中并且仍然无法运行。
所以这就是脚本现在的样子:
var tempID = ("1Rq0pDAnuGNfL6W3GB0ZuLeWM2uYzHpKzoyxoXlwjtgE") // use document ID from Template Document
var copyId = DocsList
.getFileById(tempID)
.makeCopy(student + " - TestingCopy") // names new copy as student's name + text
.addEditors([team.split(',')])
.getId();
但是当我使用var team
有或没有.split(',')
它时,它不起作用。但是在 Transcript 中它显示:
File.addEditors([[rreynolds@domain.net, parent@domain.com]])
这看起来与它何时工作时显示的相同,但这是 Transcript 中显示的最后一件事,并且编辑器没有添加到文档中,并且脚本没有完成。
我显然不明白这里的东西。有没有办法让团队 e.values 中的电子邮件以 addEditors 方法所需的方式处理?在电子表格单元格中,它们显示为 CSV。即 rreynolds@domain.net、parent@domain.com 是否必须一次阅读一个或其他内容?
我学到了很多东西,感谢您的帮助。对于所有评论的混淆,我深表歉意,但我不确定在这个论坛中解决问题的正确方法。例如:我应该返回并编辑我的原始脚本以显示当前版本,还是将其添加到其他地方?我正在努力保持对话顺畅,以便其他人更容易理解 - 谢谢 rob