Google apps script 使用LastRow脚本忽略公式列

Google apps script 使用LastRow脚本忽略公式列,google-apps-script,google-sheets,google-calendar-api,Google Apps Script,Google Sheets,Google Calendar Api,我是AppScript的新手,所以如果这太容易了,我很抱歉,我只是没有希望。我搜索了很多,但解决方案的格式都略有不同,我不知道如何使用 该脚本可以将我的工作表信息导入日历,但我希望我的第一列是公式列,我不知道如何在使用LastRow时忽略它 我从一个在线教程中获得了代码,但是如果你们都对如何做得更好/有所不同有建议,请告诉我。谢谢大家! 我在这一行中尝试了几个不同的迭代: var count = spreadsheet.getRange("B2:H"+lr+"").getValues();

我是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)
}


}
函数CreateEvent(){
var电子表格=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();

对于(x=0;x您的方法是正确的,您只需要采取一个步骤来创建事件。
startTime
endTime
参数必须是日期类型,没有字符串。要实现这一点,您需要添加以下更改:

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();

您的方法是正确的,创建事件只需执行一个步骤。
startTime
endTime
参数必须是日期类型,没有字符串。为此,您需要添加以下更改:

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();

可能重复欢迎。1)你的“lr”值是多少?2)你说“第一列是公式列,我不知道如何在使用LastRow时忽略它。”我只是不知道第一列与最后一行的关系。你能解释一下吗?3)“结果只有错误。”这太模糊了。请您将执行记录复制/粘贴到您的问题中,以便我们能够理解确切的错误。很抱歉我解释得不够好,谢谢您花时间回答。我想让第一列一直包含公式,但当我运行脚本时,第一列已填充,但l其他的都是空的,它会出错。我借用的脚本没有lr值,这就是为什么我很难知道如何填写它。我现在没有电脑来告诉你错误,很抱歉。我只是想给你一个答复,但稍后会更新。所以如果我试着用我的a列运行它,我的a列一直都有这些函数向下,我得到错误“找不到方法createEvent(string,string,string,object)。(第27行,文件“macros”)“我尝试在
var count=spreadsheet.getRange(“B2:H”+lr+”).getValues();
中调整范围,但我显然没有得到正确的结果,因为我在参数列表之后得到了“未找到范围(第9行,文件“macros”)”或“丢失”)我怀疑您正在执行脚本,而活动工作表不是包含K1中的值的工作表。建议您删除第2行(“var spreadsheet=SpreadsheetApp.getActiveSheet();”),并替换以下内容,以确保代码始终针对“Sheet1”中的数据运行无论光标的当前位置如何:
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheetname=“Sheet1”
(显然是针对实际工作表名称进行编辑)和
var spreadsheet=ss.getSheetByName(sheetname);
。然后运行代码并报告任何错误。欢迎的可能重复。1)您的“lr”值是多少?2)您说“第一列是公式列,我不知道在使用LastRow时如何忽略它。”我只是不知道第一列与最后一行的关系。您能解释一下吗“结果只有错误。"这太模糊了。请您将执行记录复制/粘贴到您的问题中,以便我们能够理解确切的错误。很抱歉我解释得不够好,谢谢您花时间回答。我想让第一列一直包含公式,但当我运行脚本时,第一列已填充,但l其他的都是空的,它会出错。我借用的脚本没有lr值,这就是为什么我很难知道如何填写它。我现在没有电脑来告诉你错误,很抱歉。我只是想给你一个答复,但稍后会更新。所以如果我试着用我的a列运行它,我的a列一直都有这些函数向下,我得到错误“找不到方法createEvent(string,string,string,object)。(第27行,文件“macros”)“我尝试在
var count=spreadsheet.getRange(“B2:H”+lr+”).getValues();
中调整范围,但我显然没有得到正确的结果,因为我在参数列表之后得到了“未找到范围(第9行,文件“macros”)”或“丢失”)我怀疑您正在执行脚本,而活动工作表不是包含K1中的值的工作表。建议您删除第2行(“var电子表格=SpreadsheetApp.getActiveSheet();”),并替换以下内容,以确保代码始终针对“Sheet1”中的数据运行,而不管光标的当前位置如何