我只是想問一下如何使用它們的 ID 將多個電子表格中的資料合并到一張表中。因此,我在 Master 電子表格中制??作了 2 張表(1 張用于 Data Master,1 張用于 ID 串列)。我想從 ID List Sheet 中獲取 ID 來獲取我想要合并的檔案和作業表。我已經使用 DriveApp.getFileById 但它仍然無法正常作業。我當前的腳本僅使用檔案名串列來訪問 sheet2 上的資料,但仍然無法正常作業。您有任何解決方案來更改或修復我的腳本嗎?這會很有幫助。謝謝!
注意:源電子表格資料始終可以更新
這是我當前的腳本(靈感來自https://codewithcurt.com/combine-multiple-spreadsheets-into-one-google-sheet/):
function myFunction() {
var sheetIDurl = 'xxxxxxxx';
var source = SpreadsheetApp.openByUrl(sheetIDurl).getSheetByName('ID').getDataRange().getValues();
var folder = DriveApp.getFolderById('xxxxxxxxxx');
var ssa = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ssa.getSheetByName('Master');
copySheet.getRange('A2:Z').clear();
var search = [];
for (var i = 1; i < source.length; i ) {
search = source[i][0].toString();
var file = folder.getFilesByName(search);
while (file.hasNext()) {
var getFile = file.next();
break;
}
Logger.log(getFile);
var ss = SpreadsheetApp.open(getFile);
SpreadsheetApp.setActiveSpreadsheet(ss);
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2');
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]);
}
}
}
}
uj5u.com熱心網友回復:
更改作業表名稱后嘗試以下示例腳本:-
function data_Merger()
{
const ss = SpreadsheetApp.getActiveSpreadsheet();
const mergeSheet = ss.getSheetByName('Master Sheet Name, where data should be pasted'); //Change sheet name
const id_Sheet = ss.getSheetByName('ID SheetName'); //Change sheet name
const IDs = id_Sheet.getRange('A2:A').getValues().flat() // Change to your column range which contains IDs
var mergedData = []
for(var i = 0 ; i < IDs.length ; i )
{
var ns = SpreadsheetApp.openById(IDs[i]).getSheetByName('Sheet2')
var MRange = ns.getRange(2, 1, ns.getLastRow()-1, ns.getLastColumn()).getValues() // Excluding Header Row
for(var j = 0 ; j < MRange.length ; j )
{
mergedData.push(MRange[j])
}
}
mergeSheet.getRange(2, 1, mergedData.length, mergedData[0].length).setValues(mergedData) // Pasting data in Master Sheet
}
- 所有作業表的結構應該完全相同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/446546.html
上一篇:從VLOOKUP回傳多個結果
