首页 > 解决方案 > 在谷歌表格中执行单元格功能

问题描述

我有一个自定义单元格函数 [=sortByWeek("Tasks")] 从不同的工作表中获取数据范围并将其排序并打印在当前工作表中。

它第一次工作得很好,但我想在每次其他工作表中的数据更新时执行它。

这是整个脚本

function sortByWeek(sheetName) {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var sheet = ss.getSheetByName(sheetName);

        var range = sheet.getDataRange();
        var array = range.getValues();

        for (var i = 0; i < array.length; i++) {

            // sort tasks by week number
            for (var j = 0; j < i; j++) {
                if (array[i][2] < array[j][2]) {
                    var x = array[i];
                    array[i] = array[j];
                    array[j] = x;
                }
            }
        }

        // insert rows between different weeks;
        var arrayFinal = [];
        let same = array[0][2];
        let total = 0;
        for (var e = 0; e < array.length; e++) {
            var string = [[""],["QWERTY", "", "", "Week " + same + " total", total, "x", ""],[""]];
            
            if (array[e][2] === same) {
                total = total + array[e][4];
                arrayFinal.push(array[e]);
            } else {
                if (!(e === 0)) {
                    for (var s = 0; s < string.length; s++) {
                        arrayFinal.push(string[s]);
                        total = 0;
                    }
                }
                arrayFinal.push(array[e]);
            }
            same = array[e][2];
        }
        for (var s = 0; s < string.length; s++) {
            arrayFinal.push(string[s]);
        }
        return arrayFinal;
    }

标签: google-sheets

解决方案


假设“任务”是工作表(选项卡)的名称,请尝试

=sortByWeek(“任务”,任务!A:Z)

第二个参数是一个“虚拟”参数:它不在自定义函数中使用,但如果编辑了范围(在第二个参数中指示),它将强制重新计算自定义公式。


推荐阅读