谷歌表单触发的脚本仅格式化谷歌表格的第一行



这是我的项目

我有一个简单的谷歌表单用于教师观察,我想使用每次表单提交触发的脚本用自动换行格式化单元格。

function triggerWrap() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Form Responses 1');
var r = s.getDataRange();
r.setWrap(true)
}
function myFunction(e) {
e.range.setWrap(true);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var cell = sheet.getRange('B1:O300');
cell.setWrap(true)
var Time = e.values[2];
var TeacherName = e.values[1];
var Date = e.values[3];
var Goal1 = e.values[4];
var Goal1Domains = e.values[5];
var Goal1Teacher = e.values[6];
var Goal1Student = e.values[7];
var Goal1Suggestions = e.values[8];
var Goal2 = e.values[9]; 
var Goal2Domains = e.values[10];
var Goal2Teacher = e.values[11];
var Goal2Student = e.values[12]; 
var Goal2Suggestions = e.values[13]; 
var subject = "Informal Observation Notes for your Records"; 
var message = "Hello,n" + "Here are the notes from our informal observation:" + "nnDate: " + Date + "nnTime: " + Time + "nnGoal 1:  " + Goal1 + "nnDomain(s): " + Goal1Domains + "nnObserved Teacher Behaviors:  " + Goal1Teacher + "nnObserved Student Behaviors: " + Goal1Student + "nnSuggestions: " + Goal1Suggestions;
MailApp.sendEmail (<******>, subject, message);
}

如您所见,我已经尝试了几种方法来执行此操作(一次作为单独的函数,在我的电子邮件通知函数中作为两种不同的方式),但只有顶行被格式化。我试过上下移动灰线,但没有效果。

最奇怪的部分:如果您单击任何单元格并手动格式化它们,则表明它已设置为自动换行。我还尝试将所有单元格设置为溢出,然后再次运行脚本。

有什么想法吗?

你需要

做一些事情。您需要将函数名称更改为onFormSubmit。此外,通过 参考资料 设置可安装的 onChange 触发器。在测试数据中,您需要为每个单元格中的文本添加一个空格。这是一个已知问题(问题 6016)。我还建议您在代码中添加垂直对齐顶部。试试这个:

 function onFormSubmit(e){
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var s = ss.getSheetByName('Form Responses 1');
   var r = s.getDataRange();
 r.setWrap(true).setVerticalAlignment("top")
}

相关内容

最新更新