有没有办法设置范围以从单个电子表格中的所有工作表中获取数据?

Is there a way to set a range to get data from all the sheets in a single spreadsheet?

我可以使用您在下面看到的代码从单个 sheet 获取值,但我想知道我是否可以以某种方式从一个 sheet 中的所有 sheet 获取所有值传播 sheet 然后根据我得到的内容操纵日期。换句话说,您能否将范围设置为包括从 sheet x 到 sheet y 的 sheets,或者至少从所有 sheets 中获取所有数据,以及之后,我将以某种方式尝试包含/排除 sheets。我正在使用表格 API,但我不能为此使用 Google 应用程序脚本。

let { google } = require("googleapis");
let authentication = require("./authentication");

function getData(auth) {
  var sheets = google.sheets('v4');
  sheets.spreadsheets.values.get({
    auth: auth,
    spreadsheetId: '1XOqjUJ1eAMhl2g4KLIS4qPUzdwebSVeoE8OGJtPYyPw',
    range: 'Test!A2:C', **//I would love to get all sheets. This is only one of them. Possible?**
  }, (err, res) => {
    if (err) {
      console.log('The API returned an error: ' + err);
      return res;
    } 
    var rows = res.values;
    if (rows.length === 0) {
      console.log('No data found.');
    } else {
        for (var i = 0; i<= rows.length; i++) {
            var row = rows[i];
            console.log(row);
          }
        }
      });
    }

authentication.authenticate()
    .then((auth) => {
        getData(auth)
        .catch((err) => {
            console.log(err)
        });
});

您可以参考此 blog 如何使用查询公式合并来自多个 sheet 的数据。下面是一个示例查询公式,用于将上述两个 sheet 的数据组合成一个 sheet.

=query({junesheet!A2:H5;julysheet!A2:H5},”Select * where Col1 is not null “)

以下是可能有帮助的其他链接:

希望对您有所帮助!

这是正确的做法。我正在回答潜在的未来参考。

copyFormatToRange(sheet, column, columnEnd, row, rowEnd)
将范围的格式复制到给定位置。如果目标大于或小于源范围,则相应地重复或截断源。请注意,此方法仅复制格式。

const ss = SpreadsheetApp.getActiveSpreadsheet();
const source = ss.getSheets()[0];
const destination = ss.getSheets()[1];

const range = source.getRange("B2:D4");

// This copies the formatting in B2:D4 in the source sheet to
// D4:F6 in the second sheet
range.copyFormatToRange(destination, 4, 6, 4, 6);

授权 使用此方法的脚本需要获得以下一项或多项的授权 scopes:

- https://www.googleapis.com/auth/spreadsheets.currentonly
- https://www.googleapis.com/auth/spreadsheets

全文如下article。祝你好运:)