谷歌表格程序不起作用,当它工作时



是的,所以我的Google Sheet程序不起作用,尽管它确实起作用了。你看,我的程序是用一个自定义函数创建一个自定义菜单,然后当我点击它时,它就会激活这个函数。我可以让我的自定义菜单和自定义函数都工作,但过了一段时间,它就启动了,说它不工作了。具体来说,我得到了

异常:无法从此上下文调用SpreadsheetApp.getUi((

对于createEmptyMenu

类型错误:无法读取未定义的属性"getRange";

对于settingA。当我创建一个新项目并复制和粘贴我的作品时,项目和程序运行得很好。那么,为什么我的程序在一段时间后突然不起作用呢?如果有帮助的话,我还有一个onEdit触发器。

function createEmptyMenu() {
var menu = SpreadsheetApp.getUi().createMenu("⚙️ Admin Settings");
menu.addItem("Seperate Rows", "settingA");
menu.addToUi();
}
function settingA() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssLength = ss.getSheets().length;

for (j = 2; j <= ssLength; j++) {
var sheet = ss.getSheets()[j];
var num = sheet.getRange("A1:A").getNumRows();
.........

我会这样做:

function settingA() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.getSheets().forEach((sh,i)=>{
let num = getColumnHeight(1,sh,ss);
})  
}
function getColumnHeight(col, sh, ss) {
var ss = ss || SpreadsheetApp.getActive();
var sh = sh || ss.getActiveSheet();
var col = col || sh.getActiveCell().getColumn();
const rcA = sh.getRange(1, col, sh.getLastRow(), 1).getValues().flat().reverse()
let s = 0;
for (let i = 0; i < rcA.length; i++) {
if (rcA[i].toString().length == 0) {
s++;
} else {
break;
}
}
return rcA.length - s;
}

像getRange('A1:A'(这样的范围倾向于在lastRow和maxRows 之间返回null

相关内容

最新更新