#mysql #google-apps-script #google-sheets
Вопрос:
Итак, я в значительной степени учился самостоятельно и столкнулся с проблемой, для которой, похоже, не могу найти решение.
Основная цель состоит в том, что у меня есть лист Google с датой начала и окончания, которую пользователь может изменить, скрипт извлекает эти даты и использует их в запросе MySQL для извлечения данных между этим диапазоном дат.
Пример: дата начала = 10/1/2021, дата окончания = 10/22/21 Запрос: «выберите * из таблицы, где таблица.дата gt;= дата начала И table.dat gt;
Смотрите мой пример кода ниже:
======================================================
var spreadsheet = SpreadsheetApp.getActive(); var sheet = spreadsheet.getSheetByName('DR_Campaign_Report'); var getStartDate = sheet.getRange(1,2).getValue(); var startDate = Utilities.formatDate(getStartDate,"GTM","MM/dd/yyyy"); var getEndDate = sheet.getRange(1,5).getValue(); var endDate = Utilities.formatDate(getEndDate,"GTM","MM/dd/yyyy"); var conn = Jdbc.getConnection(url, username, password); var stmt = conn.createStatement(); var results = stmt.executeQuery ( 'SELECT m.Campaign as "Campaign",n' 'count(m.Campaign) as "Leads",n' 'count(m.Duplicate) as "Dups",n' 'count(m.Campaign) - count(m.Duplicate) as "Valid Leads",n' 'count(m.AppSet) as "Appts",n' 'SUM(IF(m.ZepID != "",1,0)) as "Transferred Appts"n' 'FROM intakeMani mn' 'WHERE date(m.IncomingDate) gt;= date('startDate') and date(m.IncomingDate) lt;= date('endDate')n' 'OR date(m.AppSet) gt;= date('startDate') and date(m.AppSet) lt;= date('endDate')n' 'GROUP BY m.Campaign with rollup' ); The Error is here in the WHERE clause when its attempting to pull the google script variables startDate and endDate. 'WHERE date(m.IncomingDate) gt;= date('startDate') and date(m.IncomingDate) lt;= date('endDate')n' 'OR date(m.AppSet) gt;= date('startDate') and date(m.AppSet) lt;= date('endDate')n'
Я попытался ввести двойное «Дата начала» и все еще ошибаюсь. см. прилагаемый рисунок.
Комментарии:
1. даты должны быть в двойных кавычках, поэтому используйте
date("'startDate'")
, и mysql поймет запрос2. Я попробовал это, но все равно ошибки, см. Фотографию, которую я добавил в конец своего поста.
3. попробуйте
date("' startDate '")
для всех переменных даты4. Ну, я могу сохранить его сейчас, так что он исправил это, но не извлекает никаких данных. Я попытался выполнить запрос с датами в MySQL workbench, и он отлично работает. У меня есть отдельный скрипт в Google таблицах, который делает отчет за текущие дни, который извлекается из той же базы данных, поэтому я знаю, что это не проблема с подключением.
5. хм, отладка-это ваша часть, но что в результатах?