[英]App Script new Google Sheet creation issue
我正在嘗試編寫一個應用程序腳本,該腳本從多個不同的電子表格(完全獨立的文檔)中獲取字符串數據並將它們全部放入一個新的電子表格中。 當我運行記錄器時,它會顯示我想要的所有數據。 我希望每條數據都顯示在 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);
}
}
}
我相信你的目標如下。
關於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" });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.