此代码已使用多年,没有任何问题。该代码是通过单击电子表格中的小图像来触发的。 几天后,一位用户遇到了这种“类型错误:selection.getCurrentCell 不是函数”。对于其他用户,一切都像以前一样工作。 在我看来,这不是一个编程问题,而是一个授权问题或其他问题?遇到问题的用户并不是使用公司管理的设备,而是其他人使用的设备。 有什么建议吗?
/** @OnlyCurrentDoc */
function Voeg1RijToe() {
var date = new Date();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('Schakel');
var r = s.getRange('B:B');
var v = r.getValues();
for(var i=v.length-1;i>=0;i--)
if(v[0,i]=='blanco'){
var range = s.getRange('A1');
range.activate();
var selection = s.getSelection();
// Current cell: A1
var currentCell = selection.getCurrentCell();
/* ---- Zoek in de kolom B:B naar blanco ------ */
/* ---- Voeg 1 rij erONDER toe en vul de datum van vandaag in ------ */
s.getCurrentCell().offset(i,1).activate();
s.insertRowsAfter(s.getActiveRange().getRow(), 1);
/* --hieronder was offset(0,0,1)-- */
s.getActiveRange().offset(1, 0, 1, s.getActiveRange().getNumColumns()).activate();
s.getCurrentCell().offset(0, -1).activate();
s.getCurrentCell().setValue(date);
s.getCurrentCell().activate();
/* ------Ga 1 rij naar boven en selecteer cellen met formules en copieer in de nieuwe rij ---------- */
s.getCurrentCell().offset(-1, 2, 1, 3).activate();
var destinationRange = s.getActiveRange().offset(0, 0, 2);
s.getActiveRange().autoFill(destinationRange, SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
s.getCurrentCell().offset(0, 5).activate();
destinationRange = s.getActiveRange().offset(0, 0, 2);
s.getActiveRange().autoFill(destinationRange, SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
s.getCurrentCell().offset(0, 7, 1, 3).activate();
destinationRange = s.getActiveRange().offset(0, 0, 2);
s.getActiveRange().autoFill(destinationRange, SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
s.getCurrentCell().offset(1, -14, 1, 1).activate();
/* offset(rowOffset, columnOffset, numRows, numColumns) */
/* ---------------- */
/* s.getCurrentCell().activate(); */
};
};
/* Kris Paeschuyzen: juni 2019 */
在用户的 chromebook 设备上,我删除了 Google 表格页面的 cookie 和浏览历史记录,并运行了操作系统更新。 当然,我检查了代码的更改历史记录,但什么也没发生。我检查了用户对电子表格的访问权限(不是代码,因为我找不到......)
用户报告此问题较早发生过,但只是偶尔出现......
在测试您的代码时,我注意到
line 14
呈灰色,表明它尚未声明。
var currentCell = selection.getCurrentCell();
同样,当我尝试注释掉第12行时,也显示它没有声明。
var selection = s.getSelection();
我最初遇到了您的代码的问题,它一开始不起作用。然而,经过多次尝试后,它最终开始按预期响应。您可以在 Issue Tracker 中报告此问题,如果您计划将来使用该代码,
line 14
有一个需要解决的错误。