Google 仅表单触发的脚本格式化 Google Sheet 的首行?
Google Form-Triggered Script Only Formatting Top Row of Google Sheet?
Here是我的项目
我有一个简单的 google 表格供教师观察,我想使用由每次提交表格触发的脚本来设置自动换行的单元格格式。
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:" + "\n\nDate: " + Date + "\n\nTime: " + Time + "\n\nGoal 1: " + Goal1 + "\n\nDomain(s): " + Goal1Domains + "\n\nObserved Teacher Behaviors: " + Goal1Teacher + "\n\nObserved Student Behaviors: " + Goal1Student + "\n\nSuggestions: " + Goal1Suggestions;
MailApp.sendEmail (<******>, subject, message);
}
如您所见,我已经尝试了几种方法(一次是作为一个单独的函数,另一种是在我的电子邮件通知函数中使用两种不同的方法),但只有第一行进行了格式化。我试过上下移动灰线,但没有效果。
最奇怪的部分:如果你点击任何一个单元格并去手动设置它们的格式,它说它已经设置为自动换行。我还尝试将所有单元格设置为溢出,然后再次 运行 脚本。
有什么想法吗?
你需要做几件事。您需要将函数名称更改为 onFormSubmit。此外,通过资源设置可安装的 onChange 触发器。在您的测试数据中,您需要在每个单元格的文本中添加一个 space 。这是一个已知问题(问题 6016)。我还建议您在代码中添加垂直对齐顶部。试试这个:
function onFormSubmit(e){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Form Responses 1');
var r = s.getDataRange();
r.setWrap(true).setVerticalAlignment("top")
}
Here是我的项目
我有一个简单的 google 表格供教师观察,我想使用由每次提交表格触发的脚本来设置自动换行的单元格格式。
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:" + "\n\nDate: " + Date + "\n\nTime: " + Time + "\n\nGoal 1: " + Goal1 + "\n\nDomain(s): " + Goal1Domains + "\n\nObserved Teacher Behaviors: " + Goal1Teacher + "\n\nObserved Student Behaviors: " + Goal1Student + "\n\nSuggestions: " + Goal1Suggestions;
MailApp.sendEmail (<******>, subject, message);
}
如您所见,我已经尝试了几种方法(一次是作为一个单独的函数,另一种是在我的电子邮件通知函数中使用两种不同的方法),但只有第一行进行了格式化。我试过上下移动灰线,但没有效果。
最奇怪的部分:如果你点击任何一个单元格并去手动设置它们的格式,它说它已经设置为自动换行。我还尝试将所有单元格设置为溢出,然后再次 运行 脚本。
有什么想法吗?
你需要做几件事。您需要将函数名称更改为 onFormSubmit。此外,通过资源设置可安装的 onChange 触发器。在您的测试数据中,您需要在每个单元格的文本中添加一个 space 。这是一个已知问题(问题 6016)。我还建议您在代码中添加垂直对齐顶部。试试这个:
function onFormSubmit(e){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Form Responses 1');
var r = s.getDataRange();
r.setWrap(true).setVerticalAlignment("top")
}