Google Apps脚本未检测到当前行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google Apps脚本未检测到当前行相关的知识,希望对你有一定的参考价值。

我创建了一个与Google电子表格中的自定义菜单项绑定的函数,用于检测当前行并执行一些检查。问题是,每次我运行菜单项>脚本时,它总是检测第1行,而不是当前脚本。这是供参考的代码:

function updateCalendarItems(){


//this function detects the current row and updates the main and follow up calendar events
  //Get the current row
  var ss = SpreadsheetApp.openById('<deleted>');
  var sheet = ss.getSheetByName('db_clientvisit');

  Logger.log('Sheet Name: '+sheet.getName()); //this logs the correct sheet name
//  var range = sheet.getActiveCell();
  var rowNum = sheet.getActiveCell().getRow();
  Logger.log(rowNum); //always logs 1
  var range = sheet.getRange(rowNum, 1, 1, 13).getValues(); //always returns the first row
  Logger.log(range);
  var ui = SpreadsheetApp.getUi();
  ui.alert('Row Num is :'+rowNum+' Column Num is: '+sheet.getActiveCell().getColumn());
  return;
  var range = sheet.getRange(rowNum, 1, 1, 13);
  var row = range.getValues()[0];
  Logger.log(row);
  //open the calendar 
  var calendarID = 'loveyourself.ph_umvj5k6vo45ei0mbh423g97ebg@group.calendar.google.com';
  var calendar = CalendarApp.getCalendarById(calendarID);
  //update the calendar...
}
答案

使用var ss = SpreadsheetApp.getActive()

使用SpreadsheetApp.openById('<deleted>')时,实际上是在打开电子表格的新会话而不是活动会话。因此,Apps Script无法获得“活动”范围。

类似地,您可能还想尝试使用SpreadsheetApp.getCurrentCell()

SpreadsheetApp.getCurrentCell()

以上是关于Google Apps脚本未检测到当前行的主要内容,如果未能解决你的问题,请参考以下文章

Google Apps 脚本按钮:我可以分配一个未附加到工作表的“全局”脚本吗?

Google Apps 脚本 Google Sheets Gmail 处理新电子邮件 追加行数组

搜索值,然后在Google表格中查找并使用google apps脚本在html中显示行值

获取 Google Apps 脚本中最后插入行的标识

Google Apps脚本未遍历所有文件

为啥通过 Google Apps 脚本向 Bigquery 加载的数据仅限于 513 行数据?