【发布时间】:2021-09-05 15:54:16
【问题描述】:
我正在尝试使用 Google 电子表格抓取 3000 多个数据。我使用 Google App Script 在 A 列中的每个单元格上循环并将其排列在不同的列上。我能够创建一个简单的脚本,该脚本将遍历一个单元格,抓取数据并将其插入指定的列。问题是,我制作的脚本直到专栏结束时才会抓取或循环。即使我在该列上有 3000 多个数据,它也最多只能抓取 1654 个列。数据由个人的多个信息组成。信息由姓名、日期、日期、时间和客户描述组成。 请注意,该列的 1 个单元格中插入了 1 个数据。这意味着我在 A 列中有 3000 多个单元格的数据。
样本数据:
John Doe 2021 年 6 月 21 日星期二,购买了 1 包泡泡糖
Trish Smith 星期一,06/21/2021,买了一包泡泡糖
Karen Peralta 2021 年 6 月 21 日星期四,买了一包泡泡糖
附加问题。使用谷歌应用脚本循环遍历每个单元格是否有限制?
function rawDataAlteration() {
var days = new Array('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday');
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Raw Data');
var data = spreadsheet.getRange('A1:A').getValues();
var filteredData = new Array();
for (q in data) {
if(data[q] != "") {
filteredData.push(data[q]);
}
}
for (x in filteredData) {
if (filteredData[x] != "") {
var convertedToArray = filteredData[x][0].split(',');
var nametoArray = convertedToArray[0].split(' ');
var name = new Array();
var day = "";
var columnNum = Math.floor(x)+1;
var nameColumn = 'A'+ columnNum;
var dayColumn = 'B' + columnNum;
var dateColumn = 'C' + columnNum;
var shiftColumn = 'D' + columnNum;
for(let i in nametoArray){
let found = false;
for(let j in days){
if(nametoArray[i] == days[j]){
day = days[j];
found = true;
}
}
if(!found){
name.push(nametoArray[i]);
}
}
var columnB = spreadsheet.getRange(nameColumn).setValue(name.toString().replace(',', ' '));
var columnD = spreadsheet.getRange(dayColumn).setValue(day);
var columnD = spreadsheet.getRange(dateColumn).setValue(convertedToArray[1]);
// Logger.log(filteredData);
}
}
}
【问题讨论】:
标签: javascript for-loop google-apps-script google-sheets