回答編集履歴

1

追記

2023/10/27 07:34

投稿

YAmaGNZ
YAmaGNZ

スコア10544

test CHANGED
@@ -30,3 +30,61 @@
30
30
 
31
31
  ```
32
32
 
33
+
34
+ コメントにて提示いただいたコードを必要部分のみにして実行してみましたが、正常にポストされました。
35
+ ```JavaScript
36
+ function tweettest() {
37
+ const twitter = getTwitterService()
38
+
39
+ if(twitter.hasAccess()) {
40
+
41
+ const endpoint2 = "https://api.twitter.com/2/tweets";
42
+
43
+ // 投稿内容の取得
44
+ var text = 'ポストテスト';
45
+ var file_name = ''; //画像ファイル名を設定
46
+
47
+ // テキスト関連
48
+ var twitterText = text; //ツイートテキストを設定
49
+ if(file_name != ""){
50
+ var file_temp = DriveApp.getFilesByName(file_name).next();//GoogleDriveから画像を取得
51
+ // 画像をアップロードできる様に(ここから)
52
+ var resp = file_temp.getBlob();
53
+ var resp_64 = Utilities.base64Encode(resp.getBytes());//Blobを経由してBase64に変換
54
+
55
+ var img_option = { 'method':"POST", 'payload':{'media_data':resp_64} };
56
+ var image_repsponse = twitter.fetch(endpoint1,img_option);
57
+ var image_result = JSON.parse(image_repsponse.getContentText());
58
+
59
+ var mediainfo = {
60
+ media_ids: [image_result['media_id_string']]
61
+ }
62
+ var payload = {
63
+ text: twitterText,
64
+ media: mediainfo
65
+ }
66
+ // 画像をアップロードできる様に(ここまで)
67
+ } else {
68
+ var payload = {
69
+ text: twitterText
70
+ }
71
+ }
72
+
73
+ var response = twitter.fetch(endpoint2, {
74
+ method: "post",
75
+ muteHttpExceptions: true,
76
+ payload: JSON.stringify(payload),
77
+ contentType: "application/json"
78
+ });
79
+
80
+ var result = JSON.parse(response.getContentText());
81
+
82
+ console.log(image_result + twitterText);
83
+
84
+ } else {
85
+ Logger.log(service.getLastError())
86
+ }
87
+
88
+ }
89
+
90
+ ```