前提・実現したいこと
Googleスプレッドシートを画像にしてDiscordBotに送信させたい。
https://qiita.com/iam_nk/items/6c23faf88bc15c386291
↑こちらの記事を参考に設定やコードを書いたのですが、botがずっとオフラインで動きません。
GASで「get_image」と発言させる。
↓
指定したスプレッドシートのPDFを取得する。
↓
PDFをPNGに変換する。
↓
PNGをDiscordチャンネルにアップロードする。
該当のソースコード
python
1import discord 2import urllib.request 3import json 4import re 5import gspread 6from pdf2image import convert_from_path 7from oauth2client.service_account import ServiceAccountCredentials 8 9client = discord.Client() 10 11################################### 12# 定義 13################################### 14#spreadsheet 15spreadsheet_url = "https://docs.google.com/spreadsheets/d/シートのGID/edit#gid=331736512" 16 17#2つのAPIを記述しないとリフレッシュトークンを3600秒毎に発行し続けなければならない 18scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive'] 19 20#認証情報設定(ファイルはgoogleの認証情報をリネーム) 21credentials = ServiceAccountCredentials.from_json_keyfile_name('./credentials.json', scope) 22 23#OAuth2の資格情報を使用してGoogle APIにログインします。 24gc = gspread.authorize(credentials) 25 26################################### 27# 実行部分 28################################### 29@client.event 30async def on_message(message): 31 if message.author != client.user: 32 # get_imageでスプレッドシートの画像取得実行 33 if "get_image" in message.content: 34 #pdf取得 35 pdf_export_url = spreadsheet_url + "/export?format=pdf&gid=<シートのGID>&range=J2:L10&portrait=false&size=8&fitw=true&vertical_alignment=top&horizontal_alignment=CENTER&scale=3" 36 pdf_name = "output.pdf" 37 urllib.request.urlretrieve(pdf_export_url, pdf_name) 38 39 #画像変換 40 image = convert_from_path(pdf_name) 41 image[0].save('output.png', 'png') 42 43 #変換した画像ファイル送信 44 await client.send_file(message.channel, 'output.png') 45 46client.run('トークン')
できたところ
トリガーボタンのクリックでDiscordチャンネルに「get_image」と送信する。
pythonのインストール。
API有効化とOAuthの設定。
気になったところ
json
1"json" is not accessedPylance 2(module) json 3 4JSON (JavaScript Object Notation) <http://json.org> is a subset of JavaScript syntax (ECMA-262 3rd edition) used as a lightweight data interchange format. 5 6json exposes an API familiar to users of the standard library marshal and pickle modules. It is derived from a version of the externally maintained simplejson library. 7 8Encoding basic Python object hierarchies: 9 10>>> import json 11>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}]) 12'["foo", {"bar": ["baz", null, 1.0, 2]}]' 13>>> print(json.dumps("\"foo\bar")) 14----------------------日本語訳----------------- 15「json」はPylanceにアクセスできません。 16(モジュール)json 17 18JSON(JavaScriptObjectNotation)<http:/>は、軽量データ交換フォーマットとして使用されるJavaScript構文(ECMA-2623rdEdition)のサブセットです。 19 20jsonは標準ライブラリマーシャルおよびピクルスモジュールのユーザに馴染みのあるAPIを公開する。 これは外部で管理されている単純なjsonライブラリのバージョンから派生したものである。 21 22基本的なPythonオブジェクト階層の符号化: 23 24>>>インポートjson 25>>>json.dumps(['foo'、'bar':('baz'、None、1.0、2)}) 26'''foo'''バー:["baz",null,1.0,2]]'' 27>>>print(json.publish("\"\"foo\bar"))
re
1"re" is not accessedPylance 2(module) re 3Support for regular expressions (RE). 4 5This module provides regular expression matching operations similar to those found in Perl. It supports both 8-bit and Unicode strings; both the pattern and the strings being processed can contain null bytes and characters outside the US ASCII range. 6 7Regular expressions can contain both special and ordinary characters. Most ordinary characters, like "A", "a", or "0", are the simplest regular expressions; they simply match themselves. You can concatenate ordinary characters, so last matches the string 'last'. 8 9The special characters are: 10 "." Matches any character except a newline. "^" Matches the start of the string. "$" Matches the end of the string or just before the newline at 11----------------------日本語訳----------------- 12「re」はPylanceにアクセスできません。 13(モジュール)re 14正規表現(RE)のサポート。 15 16このモジュールでは、Perlと同様の正規表現照合操作を提供します。 8ビット文字列とUnicode文字列の両方をサポートします。パターンと処理中の文字列の両方にヌルバイトとUSASCII範囲外の文字を含めることができます。 17 18正規表現には、特殊文字と通常文字の両方を含めることができます。 「A」、「a」、または「0」のような一般的な文字は、最も単純な正規表現であり、それらは単に自分自身と一致するだけです。 通常の文字を連結できるため、lastは文字列「last」と一致します。 19 20特殊文字は次のとおりです。 21 ""。改行以外の任意の文字と一致します。 "^"文字列の先頭と一致します。 "$"文字列の末尾、または次の改行の直前と一致します。
補足情報(FW/ツールのバージョンなど)
python3.9.6
あなたの回答
tips
プレビュー