一次将Google Sheet数据全部导入到具有数据的现有表格
目前,我一直在使用此脚本,该脚本从我的Google Drive中的电子表格中导入数据。该函数起作用,但一次导入数据一行。有时,这些床单是400列以上,需要很长时间。我正在寻找它来获取所有数据并将其导入现有的电子表格和最后一个值的末尾。
function getData() {
get_files = ['July1-2022'];
var ssa = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ssa.getSheetByName('CancelRawData');
for(z = 0; z < get_files.length; z++)
{
var files = DriveApp.getFilesByName(get_files[z]);
while (files.hasNext())
{
var file = files.next();
break;
}
var ss = SpreadsheetApp.open(file);
SpreadsheetApp.setActiveSpreadsheet(ss);
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for(var i = 0; i < sheets.length; i++)
{
var nameSheet = ss.getSheetByName(sheets[i].getName());
var nameRange = nameSheet.getDataRange();
var nameValues = nameRange.getValues();
for(var y = 1; y < nameValues.length; y++)
{
copySheet.appendRow(nameValues[y]);
}
}
}
SpreadsheetApp.getUi().alert("
Currently I have been using this script which imports data from a spreadsheet located in my google drive. The function works but imports the data one line at a time. Some times these sheets are 400+ rows and that takes a long time. I am looking for it to grab all data and import it into an existing spreadsheet and the end of the last value.
function getData() {
get_files = ['July1-2022'];
var ssa = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ssa.getSheetByName('CancelRawData');
for(z = 0; z < get_files.length; z++)
{
var files = DriveApp.getFilesByName(get_files[z]);
while (files.hasNext())
{
var file = files.next();
break;
}
var ss = SpreadsheetApp.open(file);
SpreadsheetApp.setActiveSpreadsheet(ss);
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for(var i = 0; i < sheets.length; i++)
{
var nameSheet = ss.getSheetByName(sheets[i].getName());
var nameRange = nameSheet.getDataRange();
var nameValues = nameRange.getValues();
for(var y = 1; y < nameValues.length; y++)
{
copySheet.appendRow(nameValues[y]);
}
}
}
SpreadsheetApp.getUi().alert("???? Congratulations, your data has been all imported", SpreadsheetApp.getUi().ButtonSet.OK);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我相信您的目标如下。
修改点:
appendrow
在循环中使用。过程成本将很高。sheet
可以通过var sheets = everdsheetapp.open(file).getSheets();
编写。当这些要点反映在您的脚本中时,如下所示。
修改后的脚本1:
此脚本使用电子表格服务(电子表格)。
I believe your goal is as follows.
Modification points:
appendRow
is used in a loop. The process cost will be high.sheets
can be written byvar sheets = SpreadsheetApp.open(file).getSheets();
.When these points are reflected in your script, it becomes as follows.
Modified script 1:
This script uses the Spreadsheet service (SpreadsheetApp).
Modified script 2:
This script uses Sheets API. Before you use this script, please enable Sheets API at Advanced Google services.
Note:
get_files
are retrieved and all values are retrieved from all sheets in all Spreadsheets, and the retrieved values are put to the destination sheet ofCancelRawData
.References: