MENU
  • はじめての n8n
  • 作り方
  • エラー対処
  • Claude 活用
  • 運営者
n8n × Claude 自動化の実践記録 | 自動化ラボ
自動化ラボ
  • はじめての n8n
  • 作り方
  • エラー対処
  • Claude 活用
  • 運営者
  • はじめての n8n
  • 作り方
  • エラー対処
  • Claude 活用
自動化ラボ
  • はじめての n8n
  • 作り方
  • エラー対処
  • Claude 活用
  • 運営者
  1. ホーム
  2. エラー・つまずき対処
  3. n8nでTelegramのメッセージが消える・2回記録されるとき(getUpdatesのoffset)の対処

n8nでTelegramのメッセージが消える・2回記録されるとき(getUpdatesのoffset)の対処

2026 10/07
エラー・つまずき対処
Google スプレッドシート localhost・Docker Telegram
2026年10月3日2026年10月7日
当ページのリンクには広告が含まれています。
  • 動作確認日:2026-10-01
  • n8nのバージョン:2.41.3(Docker、セルフホスト)
目次

前提

n8nを localhost で動かしているので、Telegram Triggerは使えません。そこで、TelegramのAPI(getUpdates)で、n8nのほうからボットあてのメッセージを取りに行き、Googleスプレッドシートに記録するワークフローを作りました。

getUpdates は、offset(最後に読んだ update_id + 1)を付けて呼ぶと、それより前のメッセージを「読んだ」とみなして、もう返さなくなるしくみです。

起きたこと1:メッセージが消えた

1回目の作りでは、4通のメモを受け取れていたのに、シートには何も記録されませんでした。しかも、もう一度動かしても、その4通は二度と返ってきませんでした。

原因

  • 「メモがあるか」を判定するIfノードの条件の書き方が合っておらず、4通ともfalse側(メモなし)に流れていた。
  • メッセージを受け取った時点で、offset を先に進めて保存していた。そのため、記録に失敗しても、Telegramには「読んだ」と伝わってしまった。

対処

  • Ifノードの条件を「text が空でない」に変えた。
  • offset を保存するのは、シートへの記録が済んだあとにした。

起きたこと2:同じメッセージが2回記録された

作り直したあとに2回続けて動かすと、2回目にも同じ3通が記録され、シートが6行になりました。

原因 offset を保存するノードが、次に読む位置を受け取れておらず、offset が保存されていませんでした。そのため、2回目もTelegramから同じメッセージが返ってきました。

対処

  • 次に読む位置を、getUpdates の結果から直接計算するようにした。
  • 念のため、シートへの書き込みを「Append or Update Row」(メッセージIDで照合)にして、同じメッセージを受け取っても行が増えないようにした。
// シートに記録できたあとで、次に読む位置を覚える
const state = $getWorkflowStaticData('global');
const updates = $('Get Updates').first().json.result || [];
if (updates.length) state.offset = Math.max(...updates.map(u => u.update_id)) + 1;
return $input.all();

確かめたこと

直したあとは、1回目に3通を記録し、2回目は「新しいメモはありませんでした」となって、シートは3行のままでした。

ポイント

  • 「読んだ」と伝える(offset を進める)のは、処理が全部済んでからにする。
  • 万一同じものを受け取っても大丈夫なように、IDで上書きする作りにしておく。

関連記事

  • n8nでTelegramのボットに送ったメモをGoogleスプレッドシートに記録するワークフロー(公開URLなし)
エラー・つまずき対処
Google スプレッドシート localhost・Docker Telegram
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
  • n8nのGoogle Drive Triggerが動かないときに試したこと(有効にし直したら動いた)
  • Slack APIで「missing_scope」が出るとき(n8nでSlackに通知する前の確認)

この記事を書いた人

自動化ラボ管理人のアバター 自動化ラボ管理人

コードは書けないけれど、n8n と Claude(Claude Code)で仕事とブログを自動化しています。実際に動かしたワークフローを、動作確認日・JSON・つまずいたところまで記録しています。

関連記事

  • localhostのn8nで、Telegram TriggerやGitHub Triggerが使えないときの方法
    2026年10月3日
  • n8nで通知を送る方法まとめ:Discord・LINE・Telegram・Slackを実際に試して比べた
    2026年10月3日
  • n8nのGoogle連携まとめ:Sheets・Gmail・Calendar・Driveを、1つのOAuthクライアントで使う
    2026年10月3日
  • n8nのRespond to Webhookが返事をしない(本文が空になる)ときの対処
    2026年10月3日
  • n8nでGoogleにログインすると「エラー 401: invalid_client」になるときの対処
    2026年10月3日
  • n8nのGoogle Sheetsで「Unable to sign without access token」になるときの対処
    2026年10月3日
  • ワークフロー全体(Webhook → RSS Read → Pick New → Has New → Telegram / Respond None)
    n8nでブログの新着記事をTelegramに通知するワークフロー(重複なし)
    2026年10月1日
  • ワークフロー全体(Webhook → Get Offset → Get Updates → Pick Memos → Has Memo → Google Sheets → Save Offset)
    n8nでTelegramのボットに送ったメモをGoogleスプレッドシートに記録するワークフロー(公開URLなし)
    2026年10月1日

記事の種類

  • Claude 活用
  • n8n リリース情報
  • はじめての n8n
  • エラー・つまずき対処
  • サーバー・WordPress
  • テンプレート配布
  • ワークフローの作り方
  • 運営記録
つなぐサービス
Google スプレッドシートRSSLINESlackGmailDiscordTelegramWebhookn8n API天気 APIGoogle カレンダーGoogle ドライブ
目次
  • プロフィール
  • お問い合わせ
  • プライバシーポリシー

© 自動化ラボ.

目次