当方、VBAとGASを勉強中の身のものです。
つたない説明でわかりづらい部分もあると思いますがご教示願います。
業務でIEでないと動作しないWEBシステムを使用しており
システムからデータをコピペすることが多々発生していたので
下記等を参考にしながらExcelVBAでスクレイピングができるようにしました。
https://tonari-it.com/ie-setting-navigate/
すると一部の部署から
スクレイピングしたデータをGoogleスプレッドシートへ自動で入力できないかと言われ
下記の過去記事を参考にしスプレッドシートへ転記する流れはでき、
半角英数字に関しては問題なく転記することもできました。
しかし下記コードで param2 に格納している日本語だけ空値になってしまいました。
日本語と半角英数字を混在させると日本語のみ認識されず
「1あ2」と入れると「12」とスプレッドシート上では値が貼り付けられてしまいました。
GAS側で e のcontentLength では日本語の分もカウントしているようではあるのですが
parameterを見るとやはり日本語だけ認識されていない状態になっていました。
日本語の処理に関して記述している記事などが見つからずご質問をさせていただいています。
そもそも日本語は処理できないものなのでしょうか?それすらもわからないので
諦めようにも諦められない状況です。
それか他に何か良い方法があればご教示いただきたいのでよろしくお願いいたします。
【VBA】【GAS】VBAで送信し、webアプリケーションで処理させたい。
作成したサンプルコードは下記になります。
ExcelVBA
1Public Sub html_post() 2 3' 参照設定 4' Microsoft XML, v6.0 5 6 Dim httpReq As XMLHTTP60 7 Set httpReq = New XMLHTTP60 8 Dim param As Variant 9 Dim url As String 10 url = "ウェブ アプリケーションの URL" 11 12 With httpReq 13 .Open "POST", url, False 14 Call .setRequestHeader("Content-Type", "application/x-www-form-urlencoded") 15 param = _ 16 "param1=" & "TEST&" & _ 17 "param2=" & "テスト&" & _ 18 "param3=" & "123&" 19 .send (param) 20 End With 21 Set httpReq = Nothing 22End Sub 23
GAS
1function doPost(e) { 2 var Id = 'スプレッドシートID'; 3 var ss = SpreadsheetApp.openById(Id); 4 var sh = ss.getSheetByName('log'); 5 var maxRow = sh.getRange('A:A').getValues().filter(String).length + 1; 6 try { 7 var params = e.parameter 8 var ADD_LIST = [[ 9 params.param1, 10 params.param2, 11 params.param3 12 ]]; 13 14 sh.getRange(maxRow,1,ADD_LIST.length,ADD_LIST[0].length).setValues(ADD_LIST); 15 } catch(ex) { 16 sh.getRange(maxRow, 1).setValue('error'); 17 } 18}

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/24 02:42
2018/10/24 02:52
2018/11/14 08:29