使用LastRow脚本忽略公式列

时间:2019-09-21 03:23:23

标签: google-apps-script google-sheets google-calendar-api

我对AppScript还是很陌生,所以如果这太容易了并且很无望,我深表歉意。我搜索了一堆,但是解决方案的格式略有不同,我不确定该如何利用。

该脚本可以将我的工作表信息导入到日历中,但是我希望第一列成为公式列,并且我不知道如何在使用LastRow时忽略它。

我从在线教程中获得了代码,但是如果大家都对如何做得更好/有不同的建议,请告诉我。谢谢!

我在这一行中尝试了一些不同的迭代:

var count = spreadsheet.getRange("B2:H"+lr+"").getValues();  

但是我这是反复试验,只有错误是结果。

function CreateEvent() {

var spreadsheet = SpreadsheetApp.getActiveSheet();
var calendarId = spreadsheet.getRange('K1').getValue();
var eventCal = CalendarApp.getCalendarById(calendarId);
var lr = spreadsheet.getLastRow();
Logger.log(lr);

var count = spreadsheet.getRange("B2:H"+lr+"").getValues(); 

for (x=0; x<count.length; x++) {

  var shift = count[x];

  var summary = shift[0];
  var guests = shift[2]; 
  var description = shift[3];
  var location = shift[4];
  var startTime = shift[5];
  var endTime = shift[6];
  var event = {
      'location': location,
      'description': description,
      'guests':guests +',',
  }

  eventCal.createEvent(summary, startTime, endTime, event)
}


}

1 个答案:

答案 0 :(得分:0)

您的方法是正确的,创建事件只需采取一个步骤。 startTimeendTime参数必须是日期类型,不能是字符串。为此,您需要添加以下更改:

var startTime = new Date(shift[5]);
var endTime = new Date(shift[6]);

使用此代码,字符串将转换为日期,并且createEvent方法将起作用。如果我对自己的解释不够充分,请进一步澄清。

作为旁注,我想在下面一行中写一点小东西:

var count = spreadsheet.getRange("B2:H"+lr+"").getValues(); 

最后一个""根本不需要,可能会引起混乱,但确实可以。为了清楚起见,我建议仅使用:

var count = spreadsheet.getRange("B2:H"+lr).getValues();