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

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

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

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

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

1887閲覧

MSAccessとGoogle Script Appsとの連携

k_code

総合スコア20

Google スプレッドシート

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

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2021/10/14 08:13

編集2021/10/14 08:18

したいこと

MSAccessとGoogle Script Appsで連携の試行錯誤中、どうしてもわからない箇所があったため、投稿させていただきます。
使用コードは今回はVBAを使用しています。受け取り側ではGASを用いていますが、エラーとなる部分がないと思い、投稿していません。
状況としましては、MSAccess(VBA)側からJsonを用いてGoogle Script Appsへと送信中、エラーが起きてしまいます。

したいこととしましてはこちらのスクリプトを参考にしてAccessとGスプレッドシートの連携をしているところでした。しかしながら、エラーが出てしまい、いろいろな方法を試しましたが解決に至らなかったため、質問させていただきました。

Jsonファイルにつきましては初心者のため、知恵をお貸しいただけると幸いです。

###エラー文章

Json

1Unexpected token in JSON at position 58969

###エラーは出ないが、Jsonでエラーになるコード

vba

1Private Function ExecuteGASFunction(ByVal access_token As String, _ 2 ByVal script_id As String, _ 3 ByVal function_name As String, _ 4 ByVal parameters As String, _ 5 Optional ByVal dev_mode As String = "false") As String 6 7 'Google Apps Script Execution API呼び出し 8 Dim ret As Variant 9 Dim url As String 10 Dim Json As String 11 Dim dat As Variant 12 Dim jsonstr As Object 13 14 Debug.Print parameters 15 16 'JSONをパースする用の変数 17 Dim doc, jsn 18 'HTMLDocumentを取得 19 Set doc = CreateObject("HtmlFile") 20 'scriptタグを追加 21 doc.Write "<script>document.JsonParse=function (s) {return eval('(' + s + ')');}</script>" 22 23 '変数を初期化 24 ret = "" 25 dat = "{'function':'" & function_name & "','parameters':'" & parameters & "','devMode':" & dev_mode & "}" 26 url = "https://script.googleapis.com/v1/scripts/" & script_id & ":run" 27 28 Debug.Print url 29 30'======================================================================== 31 32 'POST通信でAPIを叩いてデータを取得 33 With CreateObject("WinHttp.WinHttpRequest.5.1") 34 .Open "POST", url, False 35 .setRequestHeader "Content-Type", "application/json; charset=UTF-8" 36 .setRequestHeader "Authorization", "Bearer " & access_token 37 .send dat 38 39 '返ってきた値をもとにデータを処理 40 Select Case .status 41 Case 200 42 'JSONデータを取得する 43 Json = .responseText 44 45 'パース関数でJSONオブジェクトを取得 46 Set jsn = doc.JsonParse(Json) 47 48 ret = jsn.response.result 49 End Select 50 End With 51 52'======================================================================== 53 54 '値を返す 55 ExecuteGASFunction = ret 56End Function

##試したこと
『===』内が間違っているのかと考え、オブジェクトを【WinHttp.WinHttpRequest.5.1】→【msxml2.xmlhttp】へ変更しましたが、特に変わることがなかったです。
エラーよりトークンエラーの可能性があるかと考え、トークンを再取得・再配置しましたが、これも変化がありませんでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Unexpected token in JSON at position 58969

エラー箇所を具体的に調べると良いのでは?

【トレード(交換)掲示板 文字数カウント】

投稿2021/10/14 09:03

sazi

総合スコア25327

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

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

k_code

2021/10/14 12:13 編集

提示していただいたURLにて空白文字がないかなど確認したうえでもう一度走らせてみましたが、やはりここでも同じエラーコードが出ます。 調べてみたものの、やはりエラーコード58969に対する記述がなく... Json・IEコントロールに関して私は全くと言っていいほど知識がないので回答をすべて任せることになって、teratailの意向に反する可能性があるのですが、送るデータが間違っている可能性はないのでしょうか? もしパブリック変数を開示する必要があれば要所隠しつつ質問させていただく予定です。 どうか知恵をお貸しいただければと思います...
sazi

2021/10/14 12:17 編集

58969はエラーコードではなく、パース対象文字列の58969文字目という事だと思います。
k_code

2021/10/14 12:32

ご回答くださりありがとうございます。 どうやらsazi様のいう通り、文字数であっているようです。 GAS側のログを見てみると、『Logging output too large』とのことでしたのでレコード数がキャパオーバーしているようでした。 ですのでもう少し分割して、コードを書いていこうかと思います。 ここまでお付き合いくださりありがとうございました。 おかげさまで私のしたいこともできそうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問