我正在嘗試撰寫一個應用程式腳本,該腳本從多個不同的電子表格(完全獨立的檔案)中獲取字串資料并將它們全部放入一個新的電子表格中。當我運行記錄器時,它會顯示我想要的所有資料。我希望每條資料都顯示在 A 列中,但是當我運行我的腳本時,它只在電子表格中放置 1 個資料點,而不是全部。有人可以給我一些指導嗎?這是我的代碼:
function pullTogether() {
var files = DriveApp.getFolderById('Folder ID').searchFiles('title != "nothing"');
const rangeName = 'Sheet1!B2:C';
while(files.hasNext()){
var xFile = files.next();
var name = xFile.getId();
const values = Sheets.Spreadsheets.Values.get(name, rangeName).values;
for (const row in values) {
var a1 = (values[row][0]);
Logger.log(a1);
var ss = SpreadsheetApp.openById("ID of new spreadsheet"); //I have the real ID in my code
var cell = ss.getRange("A2");
cell.setValue(a1);
}
}
}
uj5u.com熱心網友回復:
我相信你的目標如下。
- 您想從特定檔案夾下每個電子表格的“B”列中檢索值。
- 您想將檢索到的值放入目標作業表的“A”列。
修改點:
關于
but when I run my script, it only puts 1 data point in the spreadsheet instead of all of them.,當我看到你的腳本時,檢索到的值總是放在目標作業表的單元格“A2”中。我認為這可能是您的問題的原因。在您的腳本中,我認為當使用以下流程時,流程成本會變低。通過此流程,您的問題也可以解決。
在您的情況下,即使不使用 Sheets API,腳本也可能使用
getValues().
當這些點反映在你的腳本中時,它變成如下。
修改后的腳本:
請設定檔案夾 ID 和目標電子表格 ID。
function pullTogether() {
// Retrieve values from each Spreadsheet.
var values = [];
var files = DriveApp.getFolderById('Folder ID').searchFiles(`title != 'nothing' and mimeType='${MimeType.GOOGLE_SHEETS}'`);
var sheetName = 'Sheet1'
while (files.hasNext()) {
var xFile = files.next();
var sheet = SpreadsheetApp.open(xFile).getSheetByName(sheetName);
if (sheet) {
var v = sheet.getRange("B2:B" sheet.getLastRow()).getValues();
values = [...values, ...v];
}
}
// Put values to the destination sheet.
var ss = SpreadsheetApp.openById("ID of new spreadsheet"); //I have the real ID in my code
var dstSheet = ss.getSheets()[0];
dstSheet.getRange(2, 1, values.length, values[0].length).setValues(values);
}
筆記:
雖然我不確定你的實際情況,但是當上面的腳本在大資料下不起作用時,請修改如下。
從
dstSheet.getRange(2, 1, values.length, values[0].length).setValues(values);到
Sheets.Spreadsheets.Values.update({ values }, ss.getId(), `'${dstSheet.getSheetName()}'!A2`, { valueInputOption: "USER_ENTERED" });
參考:
- 獲取值()
- 設定值(值)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/479331.html
標籤:javascript 谷歌应用脚本 谷歌表格 谷歌表格 API
上一篇:在一個函式中組合范圍
