我对Google App脚本和If语句有疑问。
我已经将广告帐户中的数据推送到了Google表格中。然后,我希望多个工作表从中提取特定数据。因此,我试图将一张表作为所有数据的来源。然后,我可以为每个报告选择部分数据。
主要目的是获取星期几==今天的范围。
我尝试通过添加一个检查变量来执行此操作,然后将该检查变量传递给for循环,以检查day == dayName变量。
我目前遇到执行超时问题。这使我相信我的操作方式存在问题。
数据集为21k行: A是日期,B是星期几,C是广告系列,依此类推,直到第I列。
我对脚本游戏还是很陌生,对您的帮助深表感谢。
我之所以要这样做,是因为我非常努力地在广告脚本中加入一个where语句,以便按DayOfWeek进行过滤。然后我认为这可能是替代解决方案。
谢谢, 利亚姆
function myFunction() {
//This is the days of the week for the today lookup
var days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
//This is today's date
var end = new Date().toISOString().slice(0,10);
//This supplies the current day of week
var dow = new Date(end);
var dayName = days[dow.getDay()];
var sss = SpreadsheetApp.openById('SheetID'); //ID of the sheet
var ss = sss.getSheetByName('googleData'); //Sheet name
var range = ss.getRange('A1:I'); //The range to copy
var check = ss.getRange('B2:B').getValues(); The range to if statement against
var data = range.getValues();
var tss = SpreadsheetApp.openById('SheetID'); //destination sheet ID
var ts = tss.getSheetByName('usedData'); //Destination sheet name
for (var i=0;i<check.length; i++) {
if(check[i]==dayName) {
ts.getRange(1, 1, data.length, data[0].length).setValues(data); //you will need to define the size of the copied data see getRange()
}
}
}
答案 0 :(得分:0)
我相信您想要的是找到与当前星期几匹配的所有行并将其复制到userData。试试这个。
function myFunction() {
try {
// javascript getDay starts with Sunday
var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var today = new Date();
var dayOfWeek = days[today.getDay()];
// Do you need id or just active spreadsheet?
var spread = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spread.getSheetByName("googleData");
// Get all data columns A thru I
var data = sheet.getRange(1,1,sheet.getLastRow(),9).getValues();
// results will become a 2D array to use setValues
var results = [];
for( var i=0; i<data.length; i++ ) {
// Day of week in column B
if( data[i][1] === dayOfWeek ) results.push(data[i]);
}
sheet = spread.getSheetByName("usedData");
sheet.clear();
sheet.getRange(1,1,results.length,results[0].length).setValues(results);
}
catch(err) {
Logger.log(err);
}
}