有没有办法对 sheet 中的某些数据行进行平均?

Is there a way to average only some rows of data in a sheet

我有几张表根据不同领域的文件评论导入各种乐谱。我想计算那些在每个时期进行了多次审查的办公室的平均办公室数,但是没有办法提前告诉哪些办公室将进行一次以上的审查,因此在每个列表中可能有

function getDataSubset() {
  const ss = SpreadsheetApp.getActiveSpreadsheet()
  const ssId = ss.getId();
  const sheet = ss.getSheetByName('contact')
  const sheetName = sheet.getName()
  const lastRow = sheet.getLastRow();
  const lastCol = sheet.getLastColumn();
  
//  let theQuery = "SELECT * WHERE job ='a job'"   // works
  let theQuery = "SELECT A, B WHERE E ='a job' AND G > 30"   //works
  
// with header row - result is an array of objects if header row is specified
//  const a1Range = sheet.getDataRange().getA1Notation();
//  let result = Utils.gvizQuery(
//     ssId       // YOUR_SPREADSHEET_ID
//    ,theQuery
//    ,sheetName  // can be a number (the sheetId), or the name of the sheet; if not needed, but headers are, pass in undefined
//    ,a1Range    // specify range, ex: `A2:O`
//    ,1          // HEADER_ROW_INDEX_IF_NEEDED> - always a number
//  );
  
// no header row  -  result is an array of arrays
  const a1Range = sheet.getRange(2,1,lastRow,lastCol).getA1Notation();
  let result = Utils.gvizQuery(
     ssId       // YOUR_SPREADSHEET_ID
    ,theQuery
    ,sheetName  // can be a number (the sheetId), or the name of the sheet; if not needed, but headers are, pass in undefined
    ,a1Range    // specify range, ex: `A2:O`
                // HEADER_ROW_INDEX_IF_NEEDED> - always a number
  );
  console.log( JSON.stringify(result) );
}


/**
 * 
 */
(function(context) {

    const Utils = (context.Utils || (context.Utils = {}));


    /**
     * Queries a spreadsheet using Google Visualization API's Datasoure Url.
     *
     * @param        {String} ssId    Spreadsheet ID.
     * @param        {String} query   Query string.
     * @param {String|Number} sheetId Sheet Id (gid if number, name if string). [OPTIONAL]
     * @param        {String} range   Range                                     [OPTIONAL]
     * @param        {Number} headers Header rows.                              [OPTIONAL]
     */
    Utils.gvizQuery = function(ssId, query, sheetId, range, headers) {
        var response = JSON.parse( UrlFetchApp
                .fetch(
                    Utilities.formatString(
                        "https://docs.google.com/spreadsheets/d/%s/gviz/tq?tq=%s%s%s%s",
                        ssId,
                        encodeURIComponent(query),
                        (typeof sheetId === "number") ? "&gid=" + sheetId :
                        (typeof sheetId === "string") ? "&sheet=" + sheetId :
                        "",
                        (typeof range === "string") ? "&range=" + range :
                        "",
                        "&headers=" + ((typeof headers === "number" && headers > 0) ? headers : "0")
                    ), 
                    {
                        "headers":{
                            "Authorization":"Bearer " + ScriptApp.getOAuthToken()
                        }
                    }
                )
                .getContentText()
                .replace("/*O_o*/\n", "") // remove JSONP wrapper
                .replace(/(google\.visualization\.Query\.setResponse\()|(\);)/gm, "") // remove JSONP wrapper
            ),
            table = response.table,
            rows;

        if (typeof headers === "number") {

            rows = table.rows.map(function(row) {
                return table.cols.reduce(
                    function(acc, col, colIndex) {
                        acc[col.label] = row.c[colIndex] && row.c[colIndex].v;
                        return acc;
                    }, 
                    {}
                );
            });

        } else {

            rows = table.rows.map(function(row) {
                return row.c.reduce(
                    function(acc, col) {
                        acc.push(col && col.v);
                        return acc;
                    },
                    []
                );
            });
        }

        return rows;

    };

    Object.freeze(Utils);

})(this);

您可以在表格中使用 query 功能。

将其放入单元格 E1:

=query(A:C,"select B,avg(C) where B is not null group by B label avg(C) 'Office average' ",1)