Мой лист структурирован следующим образом:
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);
}}}