pykintoneによる画像一括アップロード

下記を参考に、フィールドだけ用意したアプリに画像を一括でアップロードしたいと考えています。

簡単!ファイル一括アップロード(pykintone利用)

添付ファイルの一括アップロード

添付ファイルの一括アップロード時のエラー

 

ただ上記の記事でもみたことがないエラーが出ており根本的に解釈が間違っているような気がしています。

前提として、

①アップロードしたい画像は同じフォルダ内でいいのか

②アップロードする画像のファイルパスを指定しますが、C:から始まるファイルパスなのか、data.csvやpost.pyのフォルダ内(A)にもう一つフォルダ(B)を用意し、AからBまでのパスでいいのか

③kintoneアプリは空でいいのか

 

当方ろくにプログラミング知識がない状態で情けないのですが、

お助けいただけないでしょうか

 

使用したファイル

data.csv

age,No,type,picfile_falipath
11,1,male,pic/icon1.png
12,2,female,pic/icon2.png

 

post.py

import pykintone
from pykintone import model
import pykintone.structure_field as sf
import codecs
import csv

class Record(model.kintoneModel):
  def __init__ (self, app, row):
    super(Record, self). __init__ ()
    for cell_key, cell_val in row.items():
      if '_filepath' in cell_key:
        setattr(self, cell_key.rstrip('_filepath'), [sf.File.upload(filepath, app) for filepath in cell_val.split(';')])
      else:
        setattr(self, cell_key, cell_val)

app = pykintone.app("xxx","xxx","xxx")
with codecs.open('data.csv', 'r', 'utf-8') as csvfile:
  data = csv.DictReader(csvfile)
  records = [Record(app, row) for row in data]
for i in range(0, len(records), 100):
  app.batch_create(records[i:i+100])

表示されたエラー

Traceback (most recent call last):
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connection.py", line 174, in _new_conn
    conn = connection.create_connection(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\util\connection.py", line 72, in create_connection
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\socket.py", line 962, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
socket.gaierror: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connectionpool.py", line 703, in urlopen
    httplib_response = self._make_request(
                       ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connectionpool.py", line 386, in _make_request
    self._validate_conn(conn)
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connectionpool.py", line 1042, in _validate_conn
    conn.connect()
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connection.py", line 363, in connect
    self.sock = conn = self._new_conn()
                       ^^^^^^^^^^^^^^^^
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connection.py", line 186, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x00000195DFEAF290>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\adapters.py", line 489, in send
    resp = conn.urlopen(
           ^^^^^^^^^^^^^
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
    retries = retries.increment(
              ^^^^^^^^^^^^^^^^^^
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\util\retry.py", line 592, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='https', port=443): Max retries exceeded with url: //xxx.cybozu.com.cybozu.com/k/v1/records.json (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x00000195DFEAF290>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\xxx\Desktop\pictest\post.py", line 21, in <module>
    app.batch_create(records[i:i+100])
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\pykintone\application.py", line 97, in batch_create
    resp = self._request("POST", url, params_or_data=data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\pykintone\base_api.py", line 27, in _request
    r = requests.request(m, url, data=json.dumps(params_or_data), headers=h, **self.requests_options)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\sessions.py", line 587, in request
    resp = self.send(prep, **send_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\sessions.py", line 701, in send
    r = adapter.send(request, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\adapters.py", line 565, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='https', port=443): Max retries exceeded with url: //xxx.cybozu.com.cybozu.com/k/v1/records.json (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x00000195DFEAF290>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

Pythonが分からないので、解決につながるかどうかは不明ですが

使用したCSVファイルのカラム名の「picfile_falipath」を「picfile_filepath」に変えてみたらどうでしょう?

コードのこの部分がカラム名に関係ありそうに思えました。

if '_filepath' in cell_key:

らいとさん

 

お返事ありがとうございます。

おっしゃるとおりで、この部分誤記していたことに投稿したあとに気付きました。

ただ修正してみたものの結果は変わりませんでした。

 

もし他にお気づきの点がございましたらまたよろしくお願いいたします。

 

エラーの一番最後の部分

requests.exceptions.ConnectionError: HTTPSConnectionPool(host='https', port=443): Max retries exceeded with url: //xxx.cybozu.com.cybozu.com/k/v1/records.json (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x00000195DFEAF290>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

 とあるので、kintoneサーバーに接続できていないように見えます。

・設定情報が間違っている

・proxy環境などが存在する環境

という可能性はありませんか?

 

まず、サーバーとつながるかどうか1件データをダウンロードしてみるところからファイルをアップロードしてみるのはどうでしょうか?

haradaさん

コメントありがとうございます。

初心者過ぎるが故にharadaさんのコメントに追いついていないため一度調べながら挑戦してみます。

 

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。