0
只要我不關閉電子表格,我在Google表格單元格中有一個很好的公式。如果我這樣做,當我稍後重新打開它時,細胞永遠都會說「加載...」。用戶定義的函數上無盡的「加載......」
這裏的公式,在小區H1:
=ARRAYFORMULA(if(A1:A1000 = "", "", strArrayHash(G1:G1000)))
我也嘗試過,並得到了相同的行爲,具有:
=if(A1 = "", "", strHash(G1))
=if(A2 = "", "", strHash(G2))
=if(A3 = "", "", strHash(G3))
列A包含一個主鍵。如果數組公式沒有找到PK,那麼它應該只寫一個零長度的字符串。
細胞G1符連接列A到F:
=ARRAYFORMULA(if(A1:A1000 = "", "", (A1:A1000 & B1:B1000 & C1:C1000 & D1:D1000 & E1:E1000 & F1:F1000)))
我的用戶自定義公式strArrayHash是死的簡單,非常快,當我第一次使用它:
function strHash(valCell) {
var hash = 0;
if (valCell.length == 0) return hash;
for (i = 0; i < valCell.length; i++) {
char = valCell.charCodeAt(i);
hash = ((hash<<5)-hash)+char;
hash = hash & hash; // Convert to 32bit integer
}
return hash;
}
function strArrayHash(range) {
var ret = new Array();
var str = "";
for (item in range) {
str = range[item].toString();
if (str.length > 0) {
ret[item] = strHash(str);
} else {
ret[item] = "";
}
};
return ret;
}
唯一的辦法我發現糾正問題是手動進入並以某種方式編輯公式。
我原本以爲它通過增加睡眠狀態的工作...
if (str.length > 0) {
ret[item] = strHash(str);
Utilities.sleep(10); // circumvent undocumented execution limit
} else {
...但它僅適用於誰增加了睡眠狀態的用戶。共享訪問用戶只能看到「正在加載...」,即使最後一個編輯人員正在查看計算出的散列值。
任何人都可以提出一個原因,當電子表格關閉時停止工作?我能做些什麼呢?