Как мне обработать циклы в моем скрипте Google Sheets так, чтобы несколько (но не все) скрипты запускались одной командой? - PullRequest
1 голос
/ 15 октября 2019

Мой лист структурирован следующим образом:

1) Выпадающее меню активируется и открывается при открытии листа.
2) Раскрывающееся меню имеет три параметра:

  • Поиск.
  • Бег.
  • Загрузить.

ПОИСК открывает диалоговое окно, которое запрашивает имя и номер дела, которые, в свою очередь, помещаются в обозначенные ячейки в моем Google Sheet.

RUN выполняет поиск в моих сообщениях Gmail, Google и календарях Google, чтобы найти результаты, соответствующие критериям поиска.

UPLOAD создает записи календаря на основе результатов RUN.

Моя цель

  • Я хочу, чтобы эти сценарии, связанные с RUN , также работали с SEARCH .
  • Я хочу, чтобы скрипт автоматически выполнял поиск в моих Gmail, документах и ​​календарях для результатов, соответствующих критериям поиска, когда я нажимал ПОИСК , и вводил условия поиска в диалоговых окнах без необходимостинажмите RUN в раскрывающемся меню.
  • Я хочу, чтобы showPrompt также запускал saveEmails , но NOT eventcreator1 .
  • Я тогда хочупереименовать RUN в RE-RUN , чтобы он по-прежнему делал то, что делает (запускает saveEmails , но NOT eventcreator1 ) без повторного ввода поисковых запросов, если я не ищу новое дело.

Я неоднократно пытался удалить или изменить порядок своих циклов, но безрезультатно. Я просто не могу понять это правильно.
Это текущий код:

function onOpen(e) {
   SpreadsheetApp.getUi()
       .createMenu('WAYNE+')
       .addItem('Search', 'showPrompt')
    .addItem('RUN↓', 'saveEmails')
    .addItem('Upload Time↑', 'eventcreator1')
       .addSeparator()
       .addToUi();
}
 function showPrompt() {
  var ui = SpreadsheetApp.getUi(); // Same variations.

  var result = ui.prompt(
      'Welcome',
      'ENTER CASE#:',
      ui.ButtonSet.OK_CANCEL);

  var result1 = ui.prompt(
      'Welcome',
      'ENTER Client Name [First Last]:',
      ui.ButtonSet.OK_CANCEL);
   var button = result.getSelectedButton();
  var button1 = result1.getSelectedButton();
  var text = result.getResponseText();
  var text1 = result1.getResponseText();
  if (button == ui.Button.OK) {
    // User clicked "OK".
    var sheet1 = SpreadsheetApp.getActiveSpreadsheet();
 var sh0 = sheet1.getSheets()[0];
  var sh1 = sheet1.getSheets()[1];
   var datePlace = sh1.getRange("B3");
   datePlace.setValue(text); 

    if (button1 == ui.Button.OK) {
    // User clicked "OK".
    var sheet1 = SpreadsheetApp.getActiveSpreadsheet();
 var sh0 = sheet1.getSheets()[0];
  var sh1 = sheet1.getSheets()[1];
   var searchCriteria = sh1.getRange("B2");
   searchCriteria.setValue(text1); 
    }}}
var sheet1 = SpreadsheetApp.getActiveSpreadsheet();
 var sh0 = sheet1.getSheets()[0];
  var sh1 = sheet1.getSheets()[1];
var sh2 = sheet1.getSheets()[2];
var sh3 = sheet1.getSheets()[3];
var sh4 = sheet1.getSheets()[4];
var sh5 = sheet1.getSheets()[5];
var sh6 = sheet1.getSheets()[6];
var sh7 = sheet1.getSheets()[7]; 
var sh8 = sheet1.getSheets()[8]; 
var sh9 = sheet1.getSheets()[9]; 
var sh10 = sheet1.getSheets()[10];
var range = sh3.getRange("C2:C1000");
var arrowRange = sh1.getRange("B14");
var editClearRange = sh3.getRange("E2:E");

  var search1 = sh1.getRange("F8").getValue();
var searchBB = sh1.getRange("F5").getValue();
var SEARCH_QUERY = search1;

// Credit: https://gist.github.com/oshliaer/70e04a67f1f5fd96a708

function getEmails_(q) {
  var arrowRange=sh1.getRange("B14");
  var dupePreventRange = sh1.getRange("F14");
  sh0.clear();
  sh7.clear();
  editClearRange.clear();
  dupePreventRange.clear();
  sh9.getRange("A1").clear;
  arrowRange.setValue("↓");
    var emails = [];
    var threads = GmailApp.search(q);
    for (var i in threads) {
        var msgs = threads[i].getMessages();
        for (var j in msgs) {
            emails.push([msgs[j].getDate(), msgs[j].getPlainBody().substring(0, 49000), msgs[j].getSubject(), msgs[j].getFrom(), msgs[j].getTo()]);

        }
    }
    return emails;

}

function appendData_(sh0, array2d) {
    sh0.getRange(sh0.getLastRow() + 1, 1, array2d.length, array2d[0].length).setValues(array2d);
}

function saveEmails() {
    var array2d = getEmails_(SEARCH_QUERY);
    if (array2d) {
        appendData_(sh0, array2d);
    }

  var mycal20 = "loremipsum.com_5555554373830392d363336@resource.calendar.google.com"; // MASTER
  var cal20 = CalendarApp.getCalendarById(mycal20);
     var events20 = cal20.getEvents(new Date("January 12, 1990 00:00:00 EST"), new Date("May 18, 2050 23:59:59 EST"), {search:(searchBB)});
var row20=sh0.getLastRow()+1;
  var range20 = sh0.getRange(row20,1,1,14);
for (var k=0;k<events20.length;k++) {
var row20=sh0.getLastRow()+1;
var details20=[[events20[k].getStartTime(), events20[k].getDescription(), events20[k].getTitle(),mycal20]];
var range20=sh0.getRange(row20,1,1,4);
range20.setValues(details20);
  Utilities.sleep(10000);
    var r1 = sh3.getRange("C2:C1000").getValues();
  var cell = sh3.getRange("D2:D1000");
  cell.setNotes(r1);
}

  var mycalSTAFF = "loremipsum.com_55555kr58832tjiach0psil3ss@group.calendar.google.com";
var STAFFcal = CalendarApp.getCalendarById(mycalSTAFF);
     var eventsSTAFF = STAFFcal.getEvents(new Date("January 12, 1990 00:00:00 EST"), new Date("May 18, 2050 23:59:59 EST"), {search:(searchBB)});
var STAFFrange = sh7.getRange(1,1,1,14);
for (var j=0;j<eventsSTAFF.length;j++) {
var rowSTAFF=j+1;
var detailsSTAFF=[[mycalSTAFF,eventsSTAFF[j].getStartTime()]];
var STAFFrange=sh7.getRange(rowSTAFF,1,1,2);
STAFFrange.setValues(detailsSTAFF);
}
    var mycalAA = "loremipsum.com_cq6ugmln55555cnlokhkl5555@group.calendar.google.com";
var AAcal = CalendarApp.getCalendarById(mycalAA);
     var eventsAA = AAcal.getEvents(new Date("January 12, 1990 00:00:00 EST"), new Date("May 18, 2050 23:59:59 EST"), {search:(searchBB)});
var AArange = sh7.getRange(1,1,1,14);
for (var k=0;k<eventsAA.length;k++) {
var rowAA=sh7.getLastRow()+1;
var detailsAA=[[mycalAA,eventsAA[k].getStartTime()]];
var AArange=sh7.getRange(rowAA,1,1,2);
AArange.setValues(detailsAA);
}
    var mycalCC = "loremipsum.com_pf50prnil2u55555vjo555555@group.calendar.google.com";
var CCcal = CalendarApp.getCalendarById(mycalCC);
     var eventsCC = CCcal.getEvents(new Date("January 12, 1990 00:00:00 EST"), new Date("May 18, 2050 23:59:59 EST"), {search:(searchBB)});
var CCrange = sh7.getRange(1,1,1,14);
for (var l=0;l<eventsCC.length;l++) {
var rowCC=sh7.getLastRow()+1;
var detailsCC=[[mycalCC, eventsCC[l].getStartTime()]];
var CCrange=sh7.getRange(rowCC,1,1,2);
CCrange.setValues(detailsCC);
}
   var mycalDD = "loremipsum.com_aer92sd55555ncf7v6i8lpt6i6j555c@group.calendar.google.com";
var DDcal = CalendarApp.getCalendarById(mycalDD);
     var eventsDD = DDcal.getEvents(new Date("January 12, 1990 00:00:00 EST"), new Date("May 18, 2050 23:59:59 EST"), {search:(searchBB)});
var DDrange = sh7.getRange(1,1,1,14);
for (var x=0;x<eventsDD.length;x++) {
var rowDD=sh7.getLastRow()+1;
var detailsDD=[[mycalDD,eventsDD[x].getStartTime()]];
var DDrange=sh7.getRange(rowDD,1,1,2);
DDrange.setValues(detailsDD);
}
   var mycalBB = "loremipsum.com_53naqi1i92h5555qor96ll555a1g@group.calendar.google.com";
var BBcal = CalendarApp.getCalendarById(mycalBB);
     var eventsBB = BBcal.getEvents(new Date("January 12, 1990 00:00:00 EST"), new Date("May 18, 2050 23:59:59 EST"), {search:(searchBB)});
var BBrange = sh7.getRange(1,1,1,14);
for (var r=0;r<eventsBB.length;r++) {
var rowBB=sh7.getLastRow()+1;
var detailsBB=[[mycalBB, eventsBB[r].getStartTime(),eventsBB[r].getDescription()]];
var BBrange=sh7.getRange(rowBB,1,1,3);
BBrange.setValues(detailsBB);


}}


  var timeStampRange = sh1.getRange("A14");
  var timeStamp = new Date();
timeStampRange.setValue(timeStamp);



function search_files() {
}
var sheet1 = SpreadsheetApp.getActiveSpreadsheet();
  var sh1 = sheet1.getSheets()[1];
var search0 = sh1.getRange("C7").getValue();
var search5 = sh1.getRange("B3").getValue();
var searchFor = 'title contains "BB R&E"' + 'and fullText contains "' + search5 + '"';
 var files = DriveApp.searchFiles(searchFor);
while (files.hasNext()) {
  var file = files.next();
  Logger.log (searchFor);
  Logger.log(file.getName());

}
    var sheet1 = SpreadsheetApp.getActiveSpreadsheet();
  var sh1 = sheet1.getSheets()[1];
var search0 = sh1.getRange("C7").getValue();
var search5 = sh1.getRange("B3").getValue();
var searchFor1 = 'title contains "BB R&E"' + 'and fullText contains "' + search0 + '"';
 var files1 = DriveApp.searchFiles(searchFor1);
while (files1.hasNext()) {
  var file1 = files1.next();
   Logger.log (searchFor1);
  Logger.log(file1.getName());

}
    var body = Logger.getLog().substring(0, 49000);
var rangeTHOMAS=sh9.getRange("A1");
rangeTHOMAS.setValue(body);



  function eventcreator1() {
  var arrowRange=sh1.getRange("B14");
    var dupePreventRange = sh1.getRange("F14");

    if (dupePreventRange.isBlank()){
          var dupePreventRange = sh1.getRange("F14");
      dupePreventRange.setValue("HELLO");
    var arrowRange=sh1.getRange("B14");
  var startRow = 2;  // First row of data to process
  var numRows = 100;   // Number of rows to process
  var dataRange = sh5.getRange(startRow, 1, numRows, 5);
  var data = dataRange.getValues();
  var mycal = "loremipsum.com_55555ugmlnoaqfacn5555lokhkl55554@group.calendar.google.com";
var cal = CalendarApp.getCalendarById(mycal);
  for (i in data) {
    var row = data[i];
    var title = row[0];  // First column
    var date1 = row[1];       // Second column
    var desc = row[2];
  arrowRange.setValue("↑");
    cal.createAllDayEvent(title,
     new Date(date1),
     {description: desc});
    Utilities.sleep(250);
 }  
  var startRow1 = 2;  // First row of data to process
  var numRows1 = 100;   // Number of rows to process
  var dataRange1 = sh6.getRange(startRow1, 1, numRows1, 5);
  var data1 = dataRange1.getValues();
  var mycal1 = "loremipsum.com_555557kri8832tjiach0p5555sil3ss@group.calendar.google.com";
var cal1 = CalendarApp.getCalendarById(mycal1);
  for (i in data1) {
    var row1 = data1[i];
    var title1 = row1[0];  // First column
    var date2 = row1[1];       // Second column
    var desc1 = row1[2];

    cal1.createAllDayEvent(title1,
     new Date(date2),
     {description: desc1});
    Utilities.sleep(250);
  }

var startRow2 = 2;  // First row of data to process
  var numRows2 = 450;   // Number of rows to process
  var dataRange2 = sh8.getRange(startRow1, 1, numRows1, 5);
  var data2 = dataRange2.getValues();
  var mycal2 = "loremipsum.com_5355555aqi1i92hl3nmqo55555lea1g@group.calendar.google.com";
var cal2 = CalendarApp.getCalendarById(mycal2);
  for (i in data2) {
    var row2 = data2[i];
    var title2 = row2[0];  // First column
    var date3 = row2[1];       // Second column
    var desc2 = row2[2];

    cal2.createAllDayEvent(title2,
     new Date(date3),
     {description: desc2}); 
    Utilities.sleep(250);
  }  
    var startRow3 = 2;  // First row of data to process
  var numRows3 = 100;   // Number of rows to process
  var dataRange3 = sh10.getRange(startRow1, 1, numRows1, 5);
  var data3 = dataRange3.getValues();
  var mycal3 = "loremipsum.com_55555aqi1i92hl3nmqo55555lea1g@group.calendar.google.com";
var cal3 = CalendarApp.getCalendarById(mycal3);
  for (i in data2) {
    var row3 = data3[i];
    var title3 = row3[0];  // First column
    var date4 = row3[1];       // Second column
    var desc3 = row3[2];

    cal3.createAllDayEvent(title3,
     new Date(date4),
     {description: desc3}); 
    Utilities.sleep(250);
    var timeStampRange = sh1.getRange("A14");
  var timeStamp = new Date();
timeStampRange.setValue(timeStamp);
  }}}

1 Ответ

0 голосов
/ 16 октября 2019

Я не прошел тщательный анализ вашего кода по очевидным причинам, но добавление saveEmails() в начале функции showPrompt не решило бы проблему?

Таким образом, каждый раз, когда выбирается Search, все равно, как если бы нажимали RUN, не так ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...