You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用setInterval实现Google Sheet数据每小时逐条循环发布?

解决每小时逐条发布Google表格内容的问题

原代码的问题在于,每次setInterval触发link()函数时,都会遍历表格里的所有4条数据并全部发布,所以才会一次性发完。要实现每小时发1条并循环,我们需要跟踪当前发布到哪一条,每次只处理单条数据,然后更新索引循环往复。

下面是修改后的完整代码:

require('console-stamp')(console, { pattern: 'dd/mm/yyyy HH:MM:ss.l' });
var Twit = require('twit');
var config = require('./dmconfig');
var Tabletop = require('tabletop');
var bot = new Twit(config);
var spreadsheetUrl = 'https://docs.google.com/spreadsheets/d/1234567/edit?usp=sharing';

// 全局变量:跟踪当前要发布的条目索引,初始从第0条开始
let currentIndex = 0;

var link = () => {
  Tabletop.init({
    key: spreadsheetUrl,
    callback(data, tabletop) {
      // 先判断表格是否有数据,避免空数据报错
      if (!data || data.length === 0) {
        console.log('表格中没有可发布的数据');
        return;
      }

      // 获取当前要发布的单条内容
      const currentTweet = data[currentIndex];
      var status = currentTweet.tweetMsg + ' ' + Math.floor(Math.random() * 10000) + ' ' + currentTweet.userURL + ' via @AlDerbyshireG';
      
      console.log('准备发布内容:', status);
      bot.post('statuses/update', { status }, (err, response, data) => {
        if (err) {
          console.log('发布失败:', err);
        } else {
          console.log('Post success!');
          // 发布成功后更新索引,到达最后一条时自动回到开头循环
          currentIndex = (currentIndex + 1) % data.length;
        }
      });
    },
    simpleSheet: true
  });
}

// 首次启动先发布第一条
link();
// 每小时触发一次发布
setInterval(link, 1000 * 60 * 60);

关键修改点说明:

  • 新增currentIndex全局变量:专门记录下一次要发布的条目位置,初始从第0条起步。
  • 替换批量遍历为单条处理:不再用forEach一次性发完所有内容,只取当前索引对应的那条数据发布。
  • 循环索引逻辑:用(currentIndex + 1) % data.length实现循环——当索引走到最后一条时,加1后取数据长度的模,会自动回到0,实现无限循环发布。
  • 增加空数据判断:避免表格为空时程序报错,提升代码的健壮性。

这样修改后,程序就会每小时发布一条表格内容,发完4条后自动从第一条开始循环,完全符合你的需求~

内容的提问来源于stack exchange,提问作者AliMo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:04:52