前提・実現したいこと
freeeAPIを利用してスプレッドシートに仕訳帳データを出力しようとしています。
出力は出来たのですが、依存文字(㈱など)が含まれる文字列が文字化けしているため、
文字化けが発生しない状態にしたいです。
発生している問題・エラーメッセージ
依存文字(㈱など)が含まれる文字列が文字化けしている
該当のソースコード
freee公式で公開されていたサンプルソースをほぼ引用しています。
GAS
1 2function journals_request() { 3 4 var ss = SpreadsheetApp.getActiveSpreadsheet(); 5 var sheet = ss.getSheetByName( "仕訳帳" ); 6 sheet.clear(); 7 8 var freeeApp = getService(); 9 var accessToken = freeeApp.getAccessToken(); 10 var requestUrl = "https://api.freee.co.jp/api/1/journals?download_type=generic&company_id=XXXXXXX&visible_tags[]=all"; 11 var headers = { "Authorization" : "Bearer " + accessToken }; 12 var options = 13 { 14 "method" : "get", 15 "headers" : headers 16 }; 17 18 var JSON_response = UrlFetchApp.fetch( requestUrl , options ).getContentText(); 19 var Data = JSON.parse( JSON_response ); 20 var Target = Data.journals; 21 var id = Target.id; 22 23 //8秒後にステータス確認 24 ss.toast('仕訳帳を要求中', '実行中', 10); 25 Utilities.sleep(800); 26 journals_status(id); 27} 28 29function journals_status(id) { 30 31 var freeeApp = getService(); 32 var accessToken = freeeApp.getAccessToken(); 33 var requestUrl = "https://api.freee.co.jp/api/1/journals/reports/{id}/status?company_id=XXXXXXX"; 34 var requestUrl = requestUrl.replace( "{id}" , id ); 35 36 var headers = { "Authorization" : "Bearer " + accessToken }; 37 var options = 38 { 39 "method" : "get", 40 "headers" : headers 41 }; 42 43 var JSON_response = UrlFetchApp.fetch( requestUrl , options ).getContentText(); 44 var Data = JSON.parse( JSON_response ); 45 46 var Target = Data.journals; 47 var status = Target.status; 48 49 if(status !== "uploaded") 50 { 51 Utilities.sleep(500); 52 journals_status(id); 53 } 54 55 else 56 { 57 journals_download(id); 58 } 59 60} 61 62function journals_download(id) { 63 64 var freeeApp = getService(); 65 var accessToken = freeeApp.getAccessToken(); 66 var requestUrl = "https://api.freee.co.jp/api/1/journals/reports/{id}/download?company_id=XXXXXXX"; 67 var requestUrl = requestUrl.replace( "{id}" , id ); 68 69 var headers = { "Authorization" : "Bearer " + accessToken }; 70 var options = 71 { 72 "method" : "get", 73 "headers" : headers 74 }; 75 76 var response = UrlFetchApp.fetch( requestUrl , options ).getBlob().getDataAsString("Shift_JIS"); 77 var csv = Utilities.parseCsv(response); 78 79 var ss = SpreadsheetApp.getActiveSpreadsheet(); 80 var sheet = ss.getSheetByName( "仕訳帳" ); 81 sheet.getRange( 1 , 1 , csv.length , csv[0].length ).setValues( csv ); 82 83 ss.toast('仕訳帳のダウンロードが完了しました', '完了', 3); 84 85} 86
試したこと
下記の部分でShift_JISに変換されることで文字化けが発生しないと思ったのですが、されているので
UTF-8やAsciiなどの文字コードへ変更しましたが結果は変わらず or 全て文字化けしてしまう結果でした。
var response = UrlFetchApp.fetch( requestUrl , options ).getBlob().getDataAsString("Shift_JIS");
同様の事象がないか検索しましたが見つけることができず、こちらで質問させて頂きました。
freeeのサポートに聞いた方が良いのではないですか
余程ヘンテコな処理してないならfreeeにとっても有益な有難い問い合わせと思われるはず
freeeのサポートデスクがサッパリ技術に疎い一般事務員アルバイターみたいな人なら期待はできませんけど
hentaimanさん
アドバイスありがとうございます。
freee公式にてteratailを活用したQ&Aを提案されていたのですが、
おっしゃる通りサポート問い合わせの方が適切かもしれませんね。
今回は自己解決できたので、次回からは問い合わせも検討したいと思います。
ご意見いただきありがとうございました。
> freee公式にてteratailを活用したQ&Aを提案されていたのですが
マジですか freeeってひっでえクソサービスだな
こっちはfreeeから金もらってないぜ
回答1件
あなたの回答
tips
プレビュー