質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1760閲覧

Googleスプレッドシートを画像にしてDiscordBotに送信させたい

Silver_GEL

総合スコア9

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/09/25 12:54

編集2021/09/25 13:06

前提・実現したいこと

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とreでエラー?が出ている。
イメージ説明

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.02)}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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問