有没有办法设置范围以从单个电子表格中的所有工作表中获取数据?
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 “)
以下是可能有帮助的其他链接:
- https://productforums.google.com/forum/#!topic/docs/ZlhyAMmhJCI
- https://productforums.google.com/forum/#!topic/docs/QK0IVoqyUjA
希望对您有所帮助!
这是正确的做法。我正在回答潜在的未来参考。
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。祝你好运:)
我可以使用您在下面看到的代码从单个 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 “)
以下是可能有帮助的其他链接:
- https://productforums.google.com/forum/#!topic/docs/ZlhyAMmhJCI
- https://productforums.google.com/forum/#!topic/docs/QK0IVoqyUjA
希望对您有所帮助!
这是正确的做法。我正在回答潜在的未来参考。
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。祝你好运:)