我有一个电子表格,由外部应用程序通过Google Sheets API编辑。然后,我在电子表格中有一个谷歌应用程序脚本函数,它由可安装的更改触发器调用。在开始时,此函数检查changeType是否等于“EDIT”,然后使用getActiveRange()检查编辑范围的最后一列。这很好,但有时返回的范围比实际编辑的范围小。功能代码:
function myOnChange(e) {
if (e.changeType !== 'EDIT') {
Logger.log(`Wrong changeType: ${e.changeType}`);
return;
}
var source_sheet = e.source.getActiveSheet();
var range = source_sheet.getActiveRange();
if (range.getLastColumn() !== 7) {
Logger.log(`Wrong last column: ${range.getLastColumn()}`); // 9 line
Logger.log(`NumColumns: ${range.getNumColumns()}`); // 10 line
Logger.log(`SpreadsheetApp last column: ${SpreadsheetApp.getActiveRange().getLastColumn()}`); // 11 line
return;
}
// Do some stuff
}
例如,我们有一个空范围A3: G5。在这个范围内插入值后,它会正确填充(包括G列),但是函数中的getActiveRange()
返回范围-A3: F5(getLastColzo()
和getNumClons()
返回6(上面的9-11行代码),尽管G列的顺序是7)。
为什么会这样?我在这个电子表格中有大约30张表格,这种情况只发生在其中的少数表格上。可能是工作表上的行数导致了这种情况?
我还发现了类似的问题,但并没有答案:getActiveRange返回的范围比预期的小
更新1:
要再现问题,需要执行以下步骤:
更新2:我想我找到了边距。1539行或更少(可以为空)getActiveRange()
工作正常。如果工作表中有1540行或更多行,则此函数将返回错误的范围:如果编辑的范围中包含“F”列,则getActiveRange()
将返回范围[开始列][开始行]:F[结束行]
。因此,例如:
如果编辑的范围是A1:G1,函数将返回A1:F1
如果编辑范围为E2:M5,函数将返回E2:F5
如果编辑范围为F10:L10,函数将返回F10
如果编辑的范围是H3:N9,函数将返回右范围
需要指出的是,此问题仅在API调用后出现,如果手动编辑工作表,它仍然可以正常工作<如果你能复制这个问题,请告诉我,我没有疯。
我能够复制您的问题,并发现它已在Google问题跟踪器中提交:https://issuetracker.google.com/189920154
在问题编号旁边添加一个星号,表示您也受到影响。
以防万一,下面是我试图重现问题的代码:
// install the trigger
function createSpreadsheetChangeTrigger() {
var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('myOnChange').forSpreadsheet(ss).onChange().create();
}
// main
function myOnChange(e) {
if (e.changeType !== 'EDIT') return;
var source_sheet = e.source.getActiveSheet();
var range = source_sheet.getActiveRange();
var lastColumn = range.getLastColumn();
SpreadsheetApp.getUi().alert(lastColumn);
// if (range.getLastColumn() !== 7) { do stuff }
}
它工作正常。
基类控制器里有error方法,用于api的错误消息返回输出 /** * 操作错误跳转的快捷方法 * @access protected * @param mixed $msg 提示信息,若要指定错误码,可以传数组,格式为['code'=>您的错误码,'msg'=>'您的错误消息'] * @param mixed $data 返回的数据 * @par
我是JS的学生。我有一段代码返回了一个错误。 这是返回的语法错误。你们能解释一下我做错了什么吗?
在我们生产中的一个系统中,我们在jboss 8.2和最新的JDK 7、centos 7 64位、javax.enterprise.context.SessionScoped bean上的最新primeface中遇到了一个非常奇怪的问题。(整个项目中不使用jsf注释,仅使用CDI注释以避免潜在冲突) 在处理一个请求的过程中,@SessionScoped bean在某个时间点(我们不知道是什么触发了它
问题内容: 我有以下代码: 那应该从给定的URL返回图像。 我测试了以下两个随机选择的URL: https://www.google.co.ma/images/srpr/logo4w.png http://www.earthtimes.org/newsimage/osteoderms-storing-minerals-helped-huge-dinosaurs-survive_3011.jpg 第
JSoup-1.8.1 尝试{ Document Document=Jsoup.connect(url.get(); 返回Document.getElementsByTag(“title”).text(); }catch(异常e){ System.out.println(e); 返回null; } org.jsoup.HttpStatusExc0019: HTTP错误获取URL。状态=404, U
问题内容: 在Windows 2003上按计划任务运行的Java应用程序崩溃了,没有日志或任何有助于查明情况的信息。唯一可用的信息是该应用程序返回了代码143(8F)。该错误代码是从计划的任务日志中检索到的。 有谁知道该错误代码(143)代表什么?用户注销是否有可能导致应用程序终止? 谢谢, 问题答案: JVM错误代码143表示内部字段必须有效。这是在OTN讨论论坛上讨论的。但是,结论似乎是扼杀您