Скрипт Google Apps, если оператор соответствует значению ячейки - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть запрос, касающийся скрипта Google App и операторов If.

Я перенес данные из своего рекламного аккаунта на лист Google.Затем я хочу, чтобы несколько листов извлекли конкретные данные из этого.Поэтому я пытаюсь сделать один лист источником всех данных.Затем я могу выбрать части данных, которые мне нужны для каждого из моих отчетов.

Основным является получение диапазона, в котором день недели == сегодня.

Я пытался сделатьэто путем добавления проверочной переменной, которая затем передается в цикл for, если переменная day == dayName.

В настоящее время у меня возникает проблема с выполнением из-за истечения времени ожидания.Это наводит меня на мысль, что у меня проблема с тем, как я это сделал.

Набор данных состоит из 21 тыс. Строк: A - дата, B - день недели, C - кампания и т. Д. До столбцаI.

Я все еще очень новичок в игре сценариев, и любая помощь действительно ценится.

Причина, по которой я хочу сделать это таким образом, заключается в том, что я изо всех сил пытался включить гдезаявление в сценарии рекламы для фильтрации по 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()
    }
  }
}

1 Ответ

0 голосов
/ 21 ноября 2018

Я считаю, что вам нужно найти все строки, которые соответствуют текущему дню недели, и скопировать в 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);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...