function stopOutreachTriggers() { ScriptApp.getProjectTriggers().forEach(t => { if (t.getHandlerFunction() === 'sendReadyVcEmails') ScriptApp.deleteTrigger(t); });}
function resetErrorRows() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName(OUTREACH_SHEET); const data = sh.getDataRange().getValues(); const h = getHeaderMap_(data[0]); let reset = 0; for (let r = 1; r < data.length; r++) { if (String(data[r][h['Status']] || '').toUpperCase() === 'ERROR') { sh.getRange(r + 1, h['Status'] + 1).setValue('READY'); reset++; }
function createHourlySendTrigger() {
stopOutreachTriggers();
ScriptApp.newTrigger('sendReadyVcEmails')
.timeBased()
.everyHours(1)
.create();
SpreadsheetApp.getUi().alert('Hourly outreach trigger created. It will follow Max Emails Per Run and Send Wave from Config.');
}
function stopOutreachTriggers() {
ScriptApp.getProjectTriggers().forEach(t => {
if (t.getHandlerFunction() === 'sendReadyVcEmails') ScriptApp.deleteTrigger(t);
});
}
function resetErrorRows() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName(OUTREACH_SHEET);
const data = sh.getDataRange().getValues();
const h = getHeaderMap_(data[0]);
let reset = 0;
for (let r = 1; r < data.length; r++) {
if (String(data[r][h['Status']] || '').toUpperCase() === 'ERROR') {
sh.getRange(r + 1, h['Status'] + 1).setValue('READY');
reset++;
}
function createHourlySendTrigger() {
stopOutreachTriggers();
ScriptApp.newTrigger('sendReadyVcEmails')
.timeBased()
.everyHours(1)
.create();
SpreadsheetApp.getUi().alert('Hourly outreach trigger created. It will follow Max Emails Per Run and Send Wave from Config.');
}
function stopOutreachTriggers() {
ScriptApp.getProjectTriggers().forEach(t => {
if (t.getHandlerFunction() === 'sendReadyVcEmails') ScriptApp.deleteTrigger(t);
});
}
function resetErrorRows() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName(OUTREACH_SHEET);
const data = sh.getDataRange().getValues();
const h = getHeaderMap_(data[0]);
let reset = 0;
for (let r = 1; r < data.length; r++) {
if (String(data[r][h['Status']] || '').toUpperCase() === 'ERROR') {
sh.getRange(r + 1, h['Status'] + 1).setValue('READY');
reset++;
}
function createHourlySendTrigger() {
stopOutreachTriggers();
ScriptApp.newTrigger('sendReadyVcEmails')
.timeBased()
.everyHours(1)
.create();
SpreadsheetApp.getUi().alert('Hourly outreach trigger created. It will follow Max Emails Per Run and Send Wave from Config.');
}
function stopOutreachTriggers() {
ScriptApp.getProjectTriggers().forEach(t => {
if (t.getHandlerFunction() === 'sendReadyVcEmails') ScriptApp.deleteTrigger(t);
});
}
function resetErrorRows() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName(OUTREACH_SHEET);
const data = sh.getDataRange().getValues();
const h = getHeaderMap_(data[0]);
let reset = 0;
for (let r = 1; r < data.length; r++) {
if (String(data[r][h['Status']] || '').toUpperCase() === 'ERROR') {
sh.getRange(r + 1, h['Status'] + 1).setValue('READY');
reset++;
}
function createHourlySendTrigger() {
stopOutreachTriggers();
ScriptApp.newTrigger('sendReadyVcEmails')
.timeBased()
.everyHours(1)
.create();
SpreadsheetApp.getUi().alert('Hourly outreach trigger created. It will follow Max Emails Per Run and Send Wave from Config.');
}
function stopOutreachTriggers() {
ScriptApp.getProjectTriggers().forEach(t => {
if (t.getHandlerFunction() === 'sendReadyVcEmails') ScriptApp.deleteTrigger(t);
});
}
function resetErrorRows() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName(OUTREACH_SHEET);
const data = sh.getDataRange().getValues();
const h = getHeaderMap_(data[0]);
let reset = 0;
for (let r = 1; r < data.length; r++) {
if (String(data[r][h['Status']] || '').toUpperCase() === 'ERROR') {
sh.getRange(r + 1, h['Status'] + 1).setValue('READY');
reset++;
}
function createHourlySendTrigger() {
stopOutreachTriggers();
ScriptApp.newTrigger('sendReadyVcEmails')
.timeBased()
.everyHours(1)
.create();
SpreadsheetApp.getUi().alert('Hourly outreach trigger created. It will follow Max Emails Per Run and Send Wave from Config.');
}
function stopOutreachTriggers() {
ScriptApp.getProjectTriggers().forEach(t => {
if (t.getHandlerFunction() === 'sendReadyVcEmails') ScriptApp.deleteTrigger(t);
});
}
function resetErrorRows() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName(OUTREACH_SHEET);
const data = sh.getDataRange().getValues();
const h = getHeaderMap_(data[0]);
let reset = 0;
for (let r = 1; r < data.length; r++) {
if (String(data[r][h['Status']] || '').toUpperCase() === 'ERROR') {
sh.getRange(r + 1, h['Status'] + 1).setValue('READY');
reset++;
}
function createHourlySendTrigger() {
stopOutreachTriggers();
ScriptApp.newTrigger('sendReadyVcEmails')
.timeBased()
.everyHours(1)
.create();
SpreadsheetApp.getUi().alert('Hourly outreach trigger created. It will follow Max Emails Per Run and Send Wave from Config.');
}
function stopOutreachTriggers() {
ScriptApp.getProjectTriggers().forEach(t => {
if (t.getHandlerFunction() === 'sendReadyVcEmails') ScriptApp.deleteTrigger(t);
});
}
function resetErrorRows() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName(OUTREACH_SHEET);
const data = sh.getDataRange().getValues();
const h = getHeaderMap_(data[0]);
let reset = 0;
for (let r = 1; r < data.length; r++) {
if (String(data[r][h['Status']] || '').toUpperCase() === 'ERROR') {
sh.getRange(r + 1, h['Status'] + 1).setValue('READY');
reset++;
}
function createHourlySendTrigger() {
stopOutreachTriggers();
ScriptApp.newTrigger('sendReadyVcEmails')
.timeBased()
.everyHours(1)
.create();
SpreadsheetApp.getUi().alert('Hourly outreach trigger created. It will follow Max Emails Per Run and Send Wave from Config.');
}
function stopOutreachTriggers() {
ScriptApp.getProjectTriggers().forEach(t => {
if (t.getHandlerFunction() === 'sendReadyVcEmails') ScriptApp.deleteTrigger(t);
});
}
function resetErrorRows() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName(OUTREACH_SHEET);
const data = sh.getDataRange().getValues();
const h = getHeaderMap_(data[0]);
let reset = 0;
for (let r = 1; r < data.length; r++) {
if (String(data[r][h['Status']] || '').toUpperCase() === 'ERROR') {
sh.getRange(r + 1, h['Status'] + 1).setValue('READY');
reset++;
}