gassim
(Al-Gassim Sharaf Addin)
2026 年 5 月 11 日午後 3:03
1
こんにちは!
月初にトリガーされるはずの自動化で問題が発生しています。有効になっているにもかかわらず、自動的に実行されません。なぜ期待通りに動作しないのかをデバッグするためのログや方法が見つかりません。この問題を解決する方法をご存知の方はいらっしゃいますか?
以下をご覧ください。この自動化は毎月自動的に「Data Explorer の結果に基づいて PM をスケジュールする」ように設定されています。「今すぐトリガー」をクリックすると期待通りに動作し、リストに追加されたユーザーには Data Explorer の結果と CSV が送信されます。しかし、自動トリガーは実行されていません。
解決に向けたフィードバックやご提案をいただければ幸いです。よろしくお願いいたします!
「いいね!」 1
正確なスケジュール日付とタイムゾーン設定を確認しましたか?また、利用可能な場合は「見逃したジョブを実行」ボタンをオンにしましたか?
「いいね!」 1
putty
(putty)
2026 年 5 月 11 日午後 4:03
3
今すぐトリガー 以外の条件が自然に満たされているか確認するために、何かテストは行いましたか?
つまり、タイミングを「毎日」に設定してダミーグループに適用し、正しく動作することを確認してから、月次に変更して実際のグループに適用するという方法です。
また、ターゲットオーディエンスに対して、データエクスプローアのクエリを共有する必要があると思います 。
「いいね!」 1
gassim
(Al-Gassim Sharaf Addin)
2026 年 5 月 11 日午後 4:28
4
こんにちは
ご支援ありがとうございます.. @kairo162 @putty
はい.. しかし問題は、スケジュールされた日時で実行されないことではなく、まったく実行されていないことです。
そのボタンはどこにありますか?
2人のユーザーに直接 PM を送信する予定です。ユーザーにはクエリが共有されています。異なるタイミングでテストするという提案ありがとうございます。ダミーグループを使用して実験してみます。
「いいね!」 2
Moin
2026 年 5 月 11 日午後 4:56
5
gassim:
私が気づく主な違いは、あなたのインターフェースには自動化が次にいつトリガーされるかが表示されていないことです。
まずは同じ設定で新しい自動化を設定し、有効にした後に「次のトリガー日時」が表示されるか確認することをお勧めします。
「いいね!」 1
Lilly
(Lillian )
2026 年 5 月 11 日午後 5:28
6
私はこの正確な自動化スクリプトを、問題なく複数の場所で使用しています。以下は、そのうちの1つの設定です(テスト用に再発間隔を1週間から5分に変更していますが、1週間設定に戻せば期待通りに週1回実行されます):
PM(tech-admin はグループです)
自動化をトリガーしてから、yoursite/logs のログを確認してみてください。
「いいね!」 1
Lilly
(Lillian )
2026 年 5 月 11 日午後 5:38
7
これは表示されています:
スクリプト名とデータエクスプローアのクエリタイトルから「コントロールノブ」の絵文字を削除してみてください。それがペイロードを壊している可能性があります(ただし、問題ないはずですが)。
「いいね!」 1
gassim
(Al-Gassim Sharaf Addin)
2026 年 5 月 11 日午後 7:57
8
@Moin @Lilly へ
お手伝いいただきありがとうございます!残念ながら、謎は依然として解けていません…その理由は以下の通りです:
「トリガー日時」の前までは、まさにそのような表示で「次の自動化は [日付/時刻] にトリガーされます」というメッセージが出ていました。しかし、その日付/時刻が過ぎても正常に実行されなかった場合、そのメッセージは表示されなくなります。テスト中にタイミングを1分に変更すると、トリガーメッセージが再表示されました。以前、トリガーされなかった月にタイマーを更新したところ、「来月の最初の時刻にトリガーされます」というメッセージが表示されました(しかし実際にはトリガーされませんでした)。
実際には、ある月はトリガーされたのに他の月はトリガーされなかったため、なぜそうなるのか不明ですが、現在は自動的に起動しなくなったようです。使用しているDiscourseのバージョンは何ですか?私の環境は2026.5.0-latestです…
残念ながら、トリガーしても /logs には何も表示されません(すべてのオプションを選択しています)。
それは問題ではないと思います。トリガーを1分に設定し直したところ、送信されましたから:
Lilly
(Lillian )
2026 年 5 月 11 日午後 8:02
9
私も同じバージョンで、少なくとも週に 1 回は更新しています。
「いいね!」 1
gassim
(Al-Gassim Sharaf Addin)
2026 年 5 月 11 日午後 8:06
10
はい、ありがとうございます!月次でトリガーされるテスト自動化を作成してみませんか?
問題は「月次」トリガーにあるような気がします。1 分トリガーに変更すると動作するからです。
Lilly
(Lillian )
2026 年 5 月 11 日午後 8:11
11
わかりました。1ヶ月に設定してトリガーしたところ、正常に動作しました。ただし、テストのために1ヶ月待つのは実用的ではありません。数分後に開始日を設定してみます。
編集:月次設定は私の環境で動作しているようです。
もしあなたには正常に動作しているなら、エラーは一部のユーザーにのみ発生している可能性がありますか?
Lilly
(Lillian )
2026 年 5 月 12 日午前 8:04
13
はい、Moin と今日この件について話していたのですが、彼女は「月の長さが異なるため、月次(monthly)を使用するとバグがあるかもしれない」と指摘しました。もちろん、彼女は部分的に正しかったです
とにかく、少し調べてみました
コアの plugins/automation/lib/discourse_automation/scripts フォルダにある schedule pm with data-explorer results の自動化スクリプト自体は見つかりませんでした。どこか別の場所に隠れているようです。
しかし、ここにある再帰(recurring)のロジックを見てみました(おそらくそのスクリプトはこのロジックを使っているはずです):plugins/automation/lib/discourse_automation/triggers/recurring.rb:
when "month"
count = 0
(start_date.beginning_of_month.to_date..start_date.end_of_month.to_date).each do |date|
count += 1 if date.strftime("%A") == start_date.strftime("%A")
break if date.day == start_date.day
end
RRule::Rule
.new("FREQ=MONTHLY;INTERVAL=#{interval};BYDAY=#{count}#{byday}", dtstart: start_date)
.between(Time.now, interval_end.months.from_now)
.find { |date| date > Time.zone.now }
月次の再帰自動化の基盤となるコードは、実際の暦日ではなく「N 番目の曜日」を計算しており、Calendar day(暦日)との間にロジックの不一致があると考えています。つまり、RRule に BYDAY=#{count}#{byday} を注入することで、自動化が曜日の揃いを強制してしまい、代わりに BYMONTHDAY を使用するべきだということです。
そのため、4 月 15 日(4 月の水曜日の 3 番目にあたります)に自動化を開始するように設定した場合、システムはそのルールを「毎月の水曜日の 3 番目に実行する」と解釈してしまいます。
5 月になると、水曜日の 3 番目は 5 月 20 日となるため、スケジュールが 5 日ずれてしまいます。
さらに、月の 30 日や 31 日(例えば「火曜日の 5 番目」)に自動化を設定した場合、システムは翌月の火曜日の 5 番目を探そうとします。その月に火曜日が 4 回しか存在しない場合、システムは有効な日付を完全に発見できず、その月全体を「静かにスキップ」してしまいます。
テスト済みの修正版を持っており、チームが確認したい場合は PR を作成しています。これは「N 番目の曜日」から「正確な暦日」へのロジック変更です。
以下は、私のテストとデバッグからのスクリーンショットです:
修正なしのインスタンスと、私のロジック修正を適用したインスタンスの 2 つ
両方に全く同じ自動化を作成します(修正版は右側です):
「次の自動化はいつ実行されますか:」と表示されるバナーの違いを確認してください。5 日のズレが生じています。修正されていないバージョンは 5 月 15 日ではなく、水曜日の 3 番目 (5 月 20 日)にズレています。
例えば、実際の日付ではなく「木曜日の 4 番目」を探している場合、月が完全にスキップされてしまう可能性があります。
Rails コンソールでも同じ結果を確認できます。
修正前:
修正後:
PR はこちら:
main ← Lillinator:automation-recurring-month-fix
opened 07:59AM - 12 May 26 UTC
**Description:**
**Context / Bug:**
Currently, when an admin sets a monthly … recurring automation, the script attempts to calculate the "Nth Weekday" (e.g., "The 3rd Tuesday") using `BYDAY` instead of the actual calendar date. This causes two major issues for administrators:
1. **Shifting Dates:** Users expect a monthly report to run on the exact same calendar date (e.g., the 15th). Instead, the date shifts back and forth depending on when the "3rd Tuesday" or "2nd Friday" falls in the following month.
2. **Silent Failures:** If an admin sets a start date on the 30th or 31st of a month (e.g., the 5th Tuesday), the automation generates a rule like `BYDAY=5TU`. Months that only have 4 Tuesdays will completely fail to find a valid execution date and silently skip the entire month.
**Changes:**
* Replaced the `BYDAY` string calculation with `BYMONTHDAY=#{start_date.day}`. Monthly schedules will now reliably trigger on the exact calendar date matching user expectations.
* Removed the now-unused `count` while-loop that was calculating the weekday occurrence.
* *Minor cleanup:* Swapped `Time.now` for `Time.zone.now` in the RRule bounds check for standard Rails timezone consistency.
**Test Updates:**
* Updated two existing assertions in `recurring_spec.rb`. The original tests were explicitly (and incorrectly) expecting the buggy Nth-weekday drift. I corrected the assertion dates to expect the proper exact calendar day.
**Files Touched:**
* `plugins/discourse-automation/lib/discourse_automation/triggers/recurring.rb`
* `plugins/discourse-automation/spec/lib/discourse_automation/triggers/recurring_spec.rb`
「いいね!」 1
@j.jaffeux 急いでこれを確認してもらえませんか?