我使用此脚本来设置更改单元格的时间戳。但是它会在所有工作表中触发,我只希望在我对工作表“ XXX”进行更改时触发它。
public class Course
{
public Guid CourseID { get; set; }
[Required]
public string CourseCode { get; set; }
[Required]
public string CourseName { get; set; }
public string CourseSubject { get; set; }
public string CourseCredits { get; set; }
public virtual Subject Subject { get; set; }
}
public IEnumerable<Course> GetAllCourses()
{
try
{
return db.Courses
.Include(c => c.Subject)
.ToList();
}
catch
{
throw;
}
...
}
@foreach (var course in courseList)
{
<tr>
<td>@course.CourseCode</td>
<td>@course.CourseName</td>
<td>@course.Subject.SubjectName</td>
<td>@course.CourseCredits</td>
<td>
<a href='/Courses/Edit/@course.CourseID'>Edit</a> |
<a href='/Courses/Delete/@course.CourseID'>Delete</a>
</td>
</tr>
}
如何锁定它以仅在更改工作表“ XXX”时触发?
答案 0 :(得分:1)
您不能锁定要在特定工作表上运行的onEdit触发器。但是,在onEdit函数中,您可以检查触发该动作的工作表是否是您要定位的工作表。如果不是,您可以直接从函数返回而无需实际执行任何操作。修改后的函数如下所示(仅编辑了前两行):
function onEditDatoMaxboStart(e) {
if (e.range.getSheet().getName() !== "XXX") return;
var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("XXX"); //change this to the name of your sheet
var r = s.getActiveCell();
if( r.getColumn() != 29 ) {
var row = r.getRow();
var time = new Date();
time = Utilities.formatDate(time, "GMT+01:00", "dd.MM.yyyy hh.mm.ss");
SpreadsheetApp.getActiveSheet().getRange('AP' + row.toString()).setValue(time);
};
};
此外,我建议您查看this page,了解如何使用在触发函数中获得的事件对象。