我有这个Google Apps脚本来读取Google电子表格中的行,但我需要找出活动数组元素的行号。
目标是检查是否已处理某行(statusverwerkt
变量)。如果statusverwerkt
的值为x
,我会在日历中创建Google事件,并且我想将statusverwerkt
的值更改为yes
可能有另一种方法可以做到这一点,但找出数组元素中的当前行会很有帮助。
这是我的代码:
function caltest1() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = SpreadsheetApp.getActiveSheet().getLastRow();
var Totalrows = sheet.getDataRange();
var TotalNumrows = Totalrows.getNumRows();
var Reservations = range-1;
var startRow = 2; // First row of data to process
var numRows = Reservations; // Number of rows to process
var dataRange = sheet.getRange(startRow, 1, numRows, 17);
var data = dataRange.getValues();
var cal = CalendarApp.getDefaultCalendar();
for (i in data) {
var row = data[i];
var title = row[2]; // First column
var desc = row[7]; // Second column
var tstart = row[9];
var tstop = row[10];
var loc = row[3];
var statusverwerkt = row[14];
if (statusverwerkt = "x"){
cal.createEvent(title, new Date(tstart), new Date(tstop), {description:desc,location:loc});
//set statusverwerkt value = "yes"
}
else {
// statusverwerkt = "x"
}
}
答案 0 :(得分:2)
如果我正确理解了您的问题,可以通过向i添加1来获得行号。
例如,当您循环遍历电子表格行数组时,您可以执行以下操作:
for (i in data) {
var row_number = i+1;
+1的原因是Array被索引为零(从第0行开始计数),而Google Spreadsheet函数在第1行开始计数。
答案 1 :(得分:1)
您的代码似乎来自Tony Hirst的this blog。
您会在Create Google Calendar Events from Spreadsheet but prevent duplicates中找到它的更新版本,它会记录事件ID,以便记住哪一行已被处理,以及提供一个返回日历事件的链接。
它不是计算单个电子表格行,而是记录data
数组中的所有更新,然后在单个操作中更新电子表格。这比许多写入速度快,存在脚本在更新工作表之前因超过6分钟执行限制而中断的风险。