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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Salesforce

Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Python

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

Q&A

0回答

2016閲覧

simple_salesforce.exceptions.SalesforceMalformedRequest

beginner_py

総合スコア13

Salesforce

Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Python

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

0グッド

1クリップ

投稿2018/06/13 01:47

Salesforceというものに初めて触れたのですが、
s2h_updater.py アップデート実行
s2hdb.py 接続
sample.py 下記プログラム
でアップデートを実行すると
【simple_salesforce.exceptions.SalesforceMalformedRequest: Malformed request https://hisv.my.salesforce.com/services/data/v38.0/query/?q=SELECT+Name%2C+Website%2C+Description%2C+Description_JP__c%2C+Core_Technology__c%2C+Core_Technology_JP__c%2C+Development_Status__c%2C+Development_Status_JP__c%2C+Application__c%2C+Application_JP__c%2C+Tags__cFROM+Account+WHERE+LastModifiedDate+%3E+2018-06-08T10%3A55%3A04.000%2B0000. Response content: [{u'errorCode': u'MALFORMED_QUERY', u'message': u'\nApplication_JP__c, Tags__cFROM Account WHERE LastModifiedDate > 2018-06-08T10:55:04.000+0000\n ^\nERROR at Row:1:Column:201\nunexpected token: WHERE'}]】
このようなエラーが表示されます。
検索したのですが思い通りの検索結果が出ず詰まっています。
有識者の方よろしくお願いいたします。

#!/usr/bin/env python # -*- coding: utf-8 -*- import s2hdb from datetime import datetime as dt from operator import add # # Salesforce handle Functions # def sf_get_last_modified_date(): sf = s2hdb.sf_get_descriptor() q = "SELECT LastModifiedDate FROM Account " + \ "ORDER BY LastModifiedDate DESC LIMIT 1" r = sf.query_all(q) last_modified = dt.strptime(r["records"][0]["LastModifiedDate"], '%Y-%m-%dT%H:%M:%S.000+0000') return last_modified def sf_get_updated_companies(last_modified): sf = s2hdb.sf_get_descriptor() q = "SELECT Name, Website, Description, Description_JP__c, " + \ "Core_Technology__c, Core_Technology_JP__c, Development_Status__c, " + \ "Development_Status_JP__c, Application__c, Application_JP__c, Tags__c" + \ " FROM Account WHERE LastModifiedDate > " + \ last_modified.strftime('%Y-%m-%dT%H:%M:%S.000+0000') results = sf.query_all(q) coms = [] for r in results["records"]: com = [] elements = ['Name', 'Website', 'Description', 'Description_JP__c', 'Core_Technology__c', 'Core_Technology_JP__c', 'Development_Status__c', 'Development_Status_JP__c', 'Application__c', 'Application_JP__c', 'Tags__c'] elements = [str(e) for e in elements] for e in elements: # Convert NoneType Object as "" if (r[e] is None): r[e] = str("") r[e] = r[e].encode('utf-8') r[e] = r[e].replace('\'', '\'\'')   if (e == 'Tags__c'): if (r[e] is None): r[e] = str("") com.append('{0}'.format(r[e]).strip().split(";")) else: com.append('\'{0}\''.format(r[e])) # Duplication check. # It seems salesforce returns duplicated records. duplicated = False for c in coms: if coms[0] == '\'{0}\''.format(r["Name"]): duplicated = True if (duplicated is True): continue coms.append(com) return coms # # Local DB handle functions # def lo_get_last_modified_date(): con = s2hdb.lo_get_descriptor() cur = con.cursor() q = "SELECT last_modified from company ORDER BY last_modified DESC LIMIT 1" cur.execute(q) if (cur.rowcount == 0): # We want to move all from salesforce, so just set very early date last_modified = dt.strptime("2000/1/1 00:00:00", '%Y/%m/%d %H:%M:%S') else: last_modified = cur.fetchone()[0] cur.close() return last_modified def lo_update_companies(data): if (len(data) == 0): return con = s2hdb.lo_get_descriptor() cur = con.cursor() coms = [] for t in data: coms.append(t[0:10]) q = "INSERT INTO company (legal_name, website, desc, desc_jp, " + \ "core_tech, core_tech_jp, " + \ "development_status, development_status_jp, application, application_jp, cat_name) " + \ "VALUES " + \ ", ".join(map(lambda x: "(" + ",".join(x) + ")", coms)) + " " + \ "ON DUPLICATE KEY UPDATE legal_name = VALUES (legal_name)" cur.execute(q) cur.close() con.commit()

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問