インポートスクリプト例 [esa.io] **管理画面からインポートできるようになりました!** 詳しい方法は下記のメモをご参照ください。 #{583280} ## esaインポートスクリプト例 ```ruby:ruby-2.3.1 require 'json' require 'net/http' require 'time' require 'yaml' EXPORTED_DIR_PATH = 'esa.ioからエクスポートしたディレクトリパス' ACCESS_TOKEN = '自分のアクセストークン' TEAM_DOMAIN = 'チームのドメイン' GROUP_ID = 投稿先のグループID BASE_URL = URI.parse('https://api.docbase.io') REQUEST_HEADER = {'X-DocBaseToken' => ACCESS_TOKEN, 'X-Api-Version' => 1, 'Content-Type' => 'application/json'} def wait # 1時間に300回を超えるリクエストは無効のため待つ start_at = Time.now yield sleep_sec = [3600 / 300.0 - (Time.now - start_at), 0].max sleep(sleep_sec) end def post(request_path, data) http = Net::HTTP.new(BASE_URL.host, BASE_URL.port) http.use_ssl = BASE_URL.scheme == 'https' request = Net::HTTP::Post.new(request_path) request.body = data REQUEST_HEADER.each { |key, value| request.add_field(key, value) } response = http.request(request) response_body = JSON.parse(response.body) if response.code == '201' response_body else message = response_body['messages'].join("\n") puts "Error: #{message}" nil end end Dir.glob "#{EXPORTED_DIR_PATH}/**/*.md" do |path| open path do |file| text = file.read data = YAML.load(text) body = text.sub(/\A---$.*?^---$/m, '') tags = data['tags'].to_s.split(',') tags << 'template' if data['category'].to_s.start_with?('templates') post_json = { title: "#{data['category']} #{data['title']}", body: body, tags: tags, scope: 'group', groups: [GROUP_ID], draft: false, notice: false, published_at: data['created_at'].iso8601, }.to_json wait do print "Create post " created_post = post("/teams/#{TEAM_DOMAIN}/posts", post_json) puts created_post['url'] if created_post end end end ```