Google apps script 计算矩阵的谷歌应用程序脚本

Google apps script 计算矩阵的谷歌应用程序脚本,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个电子表格,上面有一个矩阵,用来计算一个学生和某个导师上过课的次数 矩阵可以很好地使用以下公式: =ARRAYFORMULA(SUM(IF(TERM4!$B$6:$B$2398=B$1,IF(TERM4!$C$6:$C$2398=$A2,1,IF(TERM4!$D$6:$D$2398=$A2,1,FALSE()))),FALSE())) 然而,由于学生/导师的数量,矩阵为7000个单元,大大降低了工作表的速度 有没有更好的办法。我可以运行google应用程序脚本来计算触发器上的矩阵(例如

我有一个电子表格,上面有一个矩阵,用来计算一个学生和某个导师上过课的次数

矩阵可以很好地使用以下公式:

=ARRAYFORMULA(SUM(IF(TERM4!$B$6:$B$2398=B$1,IF(TERM4!$C$6:$C$2398=$A2,1,IF(TERM4!$D$6:$D$2398=$A2,1,FALSE()))),FALSE()))
然而,由于学生/导师的数量,矩阵为7000个单元,大大降低了工作表的速度

有没有更好的办法。我可以运行google应用程序脚本来计算触发器上的矩阵(例如,每周一次)来计算矩阵,这样公式就不会减慢工作表的速度

如果结果为假,我还希望公式返回空白而不是0


谢谢你的帮助

是的,用煤气也可以。唯一有点复杂的是,如果脚本占用5分钟以上,它将无法处理所有行。为了避免这种情况,可以分块处理(比如说一次处理100个),并使用scriptProperties来记住上次处理的电子表格和行。每个触发器都将尽可能多地处理,直到所有的电子表格和行都被处理。

谢谢Zig…我对javascript相当陌生,主要使用库中的脚本…找到一个这样的脚本,哪种措辞最合适,我不知道你是否能找到一个能完全做到这一点的脚本。首先,假设可以在一次过程中处理整个阵列(无需超时),尝试这样做。你会感觉到处理过程需要多长时间。如果处理过程需要很长时间,您将不得不“分块”进行,这两种方法都需要编写一些算法,但第一种方法更容易。