只在一张纸上使用脚本

时间:2019-11-19 09:55:11

标签: google-apps-script google-sheets

我使用此脚本来设置更改单元格的时间戳。但是它会在所有工作表中触发,我只希望在我对工作表“ 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”时触发?

1 个答案:

答案 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,了解如何使用在触发函数中获得的事件对象。