Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

GASで指定したツイートにリプライを送信する方法を教えてください。

解決したいこと

ツイッター上で指定したつぶやき(スレッド)に対して、
登録したメッセージ(randomMsg)を送信したいです。

例)
現在GASを使用して、ツイッターの自動リプライ機能を持った
関数を作成したいと考えています。スプレッドシート/GAS/Twitter API
での作成です。

発生している問題・エラー

let options = {
      method  :"post",
      payload :payload
      };

let response = twitterService.fetch(url,options);
tw_id = JSON.parse(response).id_str; 
 Logger.log(tw_id);

このスクリプトでは、自分のタイムラインにツイートがされますが
指定したツイートへ返信することが出来ません。


let ss_msg = SpreadsheetApp.getActiveSpreadsheet();
let sheet_msg = ss_msg.getSheetByName("メッセージ");
let lastRow = sheet_msg.getLastRow();
let re_id = sheet.getRange("O17").getValue(); ←re_idのO17は別scriptから取得したものです
Logger.log(re_id);



if(twitterService.hasAccess()){
let url = "https://api.twitter.com/1.1/statuses/update.json"
let reply_text = randomMsg();
let payload = {status :reply_text,in_reply_to_status_id :re_id}

let options = {
      method  :"post",
      payload :payload
      };

let response = twitterService.fetch(url,options);
tw_id = JSON.parse(response).id_str; 
 Logger.log(tw_id);

}else{
 Logger.log(service.getLastError());
}
};




const randomMsg = () => {
  let count = lastRow -1;                                               
  //メッセージ数のカウント
  let message_list = sheet_msg.getRange(2,1,count,1).getValues();       
  //スプレッドシートから取得
  Logger.log(message_list);                                             
  //取得リストを配列で出来てるか確認

  let random_row = Math.ceil(Math.random()*(count-1));                  
  //Mathメソッドで乱数を作成ceilで繰り上げ

該当するソースコード

GAS,Javascript

自分で試したこと

リプライするには、

①status :でメッセージの登録。
②in_reply_to_status_id :を使用してツイート先のID指定が必要だということ。
を調べたのですが、ツイートIDの取得方法がわかりません。

get Timeline で、つぶやきに対するuserリストを取得致しました。
let user = array["statuses"][i]["user"];
let id_str = (user["id_str"]);

id_strを指定しても、認証されず
自分のタイムラインに呟くだけで、

指定したスレッド(ツイートした内容への返信)に飛ばない状態です。
この状態を、指定したツイートへの返信にしたいです。

どなたかご教授いただけましたら幸いです。

0

2Answer

自分も同じところで詰まりましたが、
statusの文中に
status = "@" + "array["statuses"][i]["user"]["screen_name"]"
のようにリプを送る対象のユーザ名をいれると解決しました。

1Like

@bcjgl さん 回答ありがとうございます!!
@マーク追加してやってみます。

なかなか解決までの道のりは長いですが、地道に頑張ります!

0Like

Your answer might help someone💌