Chromebook では Chromeブラウザしかつかえなーい!
下記の事例のように、Chromebook ではBOM付きUTF-8に保存することが難しい模様。
- Chrome管理コンソールで、ユーザーの表示が文字化けします (G Suite Help Forum)
Google スプレットシート > 形式を指定してダウンロード > カンマ区切りの値(.csv 現在のシート)
は、BOMなしのUTF-8なのでした。
下記のようにバイナリエディタ(HexEdit)でみるとBOMがないのが分かります。
ちなみに BOMありの場合には、先頭が EF BB BF で始まります。
参考:Byte_order_mark (Wikipedia)
CotEditor で見ても BOMなしですね。
BOMありの場合
じゃあ Google Apps Script で実装できるのかな
と思って
- Google Apps Script でファイルを保存してみる(Ghost in the web)
を参考に作成してみました。ちょっとハマったところがあったり、バタバタしていたので、小一日掛かってしまいました。
実装 - Google スプレットシートに CSV出力のカスタムメニューを追加する
今回3種類追加してみました。
- OUTPUT to CSV カスタムメニューを追加
- Shift_JISコードの CSVを保存
- UTF-8(BOM付き)の CSVを保存
- UTF-8(BOM無し)のCSVを保存
なお Microsoft Excel で文字化けせずに開くことができるのは、「1」「2」です。つまりは Googleスプレットシートの標準機能で CSV保存したものは Microsoft Excel で開くと日本語が文字化けしまーす。
STEP 1. Google スプレットシートを作成
適当に日本語テキストを入力します。
な感じ。
STEP 2. スクリプトエディタを開き、サンプルコードをコピー&ペーストします。
1. ツール > スクリプトエディタを開きます。
2. 中身を、outputSheetToCsvFile.gs (GitHUB)にあるコードに置き換えます。
3. 保存します。
な感じですね。
STEP 3. コードのいくつかの箇所を変更する
var drive = DriveApp.getFolderById('=== Folder ID ===');
=== Folder ID === は、スプレットシートを保存した Googleドライブのフォルダに移動して、URLの
https://drive.google.com/drive/u/0/folders/=== Folder ID====
の部分をコピー&ペーストで入れて下さい。
var base_fileName = "aaa";
ファイル名のプレフィックス名を設定してください。
aaa_UTF8.csv、aaa_Shift_JIS.csv などで保存されます。
spreadsheet.addMenu("OUTPUT to CSV", entries);
カスタムメニューの名称を変更できます。
※上記変更をしたら保存してください。
STEP 4. Google スプレットシートを再読込する
のように、それぞれ選択してみましょう。
最初の一度だけ、「承認が必要」画面がでてきます。
「続行」ボタンを押すと
のように警告がでますが、自分がつくったものですので「詳細」リンクをクリックし、
「outputSheetToCsvFile(安全ではないページ)に移動」
リンクをクリックしてください。
そうすれば、このコードが Googleドライブへアクセスしてよいかどうかの許可をきいてくるので「許可」ボタンを押します。
※もし警告を出したくないなら、下記を参考に申請してみてください。
https://support.google.com/cloud/answer/7454865
以上で完了です。
3つのCSV出力をすると下図のように、3つのファイルができると思います。
- aaa_UTF8N.csv = UTF-8 (BOMなし)
- aaa_UTF8.csv = UTF-8 (BOMあり)
- aaa_Shift_JIS.csv = Shift_JIS
STEP 5. 正しくコンバートされているか確認する
aaa_UTF8N.csv
下記のようにバイナリエディタ(HexEdit)でみるとBOMがないのが分かります。
CotEditor で見ても BOMなしですね。
ちなみに BOMありの場合には、先頭が EF BB BF で始まります。
参考:Byte_order_mark (Wikipedia)
CotEditor で見ても BOMなしですね。
aaa_UTF8.csv
参考:Byte_order_mark (Wikipedia)
のように正しく判定されていますね!!
2018年4月13日 @kimipooh
Kitani様
返信削除お世話になっております。
G Suite Help Forumに本件についての質問を投稿させて頂いております、yyamaneです。
この度は、とても丁寧な解説と、本件の対応方法を探って頂き、ありがとうございます!
取り急ぎになり恐縮ですが、お礼申し上げます。
本対応方法を試させて頂き、またご報告させてください。
それでは、失礼いたします。
kitani様
返信削除お世話になっております。
yyamaneです。
ヘルプフォーラムのほうにもコメントを返させて頂きましたが、
私のChromebookの環境で上記対応方法を実施させて頂き、文字化けすること無く正常にユーザー登録ができるようになりました。
本当にありがとうございました!
うまく解決してなによりでした!
返信削除