Googl Apps Scriptを使ってファイル読み込みからスプレッドシートに表示

Googl Apps Scriptを使ってファイル読み込みからスプレッドシートに表示

FileOpen.htmlを使用します。
スプレッドシートのメニューにおいて、追加したメニューのファイル読み込みを選択して
ローカルPCのCSVを選択して読み込むとスプレッドシートに表示されます。

GASの文字コード変換(file.getBlob().getDataAsString(“Shift_JIS”))は、機種依存文字を正しく変換できないみたいでSJISのCSVを開くと一部の機種依存文字が文字化けします。もともとUTF8だけだったようですが徐々に他の文字コードにも対応するようになっているので、次のバージョンアップで改善されるかもしれないですね。

なので手間と知識がある人ならテキストエディタを使用してSJISをUTF-8に変換してからスプレッドシートに読み込ませたほうが安心です。

でも使う人みんながテキストエディタで文字コード変換の知識があるわけではないので、
なにか方法はないかと試したところJSで読み込ませたらどうかと調べるといまのところ
JSで読み込ませたら機種依存文字でも文字化けしませんでした。
特にコード変換とかをして機種依存文字を表示させたわけでもなく、JS側で読み込んだテキストデータをGASへ渡しただけです。

今後他の文字コードを扱うときは変換スクリプトを記載する必要があります。
今のところ、GASのSJIS変換はだめだったのでJSのファイル読み込みをGASへ渡しています。

以下のコードは全部GASにて登録します。
htmlとありますが、サーバ、グーグルドライブに配置するのではなくて、GASのスクリプトエディタで登録します。


FileOpen.gsのメソッドonOpen()を登録したので、スプレッドシートを開くと自動でメニューが登録されます。
メニューから実行するとmyFunctionが実行されて、FileOpen.htmlが呼ばれてダイアログみたいに表示されます。
そして、CSVファイルを選択して読み込むと
htmlにも読み込んだ内容が表示されて、スプレッドシートに表示されます。

メニューにはスクリプトにonOpenを使用します。スプレッドシートを開いて数秒後にメニューが表示されます。

ダイアログっぽく見えますが、htmlです。

ファイルを選択したあと、開くボタンをクリックします。CSVはカンマ区切りでSJISを使用しました。なおBrowser.msgBoxを使うとこのダイアログは消されますので、表示が確認できないかもしれないです。

スプレッドシートにも文字が表示されます。

以下のコードはネットから拝借したものを含みます。ネット検索がした数が多すぎてトライ・アンド・エラーが多くてどのサイトから拝借したかわからなくなりました。参考にしたサイトのリンクは最後の方に記載しました

スプレッドシートからファイル読み込みダイアログ

GAS側で使うHTML

参考にしたサイトのリンク

初心者でも簡単!Google Apps Scriptでドキュメントを取得して表示する方法
ローカルファイルを読み込む – GoogleAppsScript屋さん
google apps scriptでspreadsheetにローカルCSVファイルをインポート(SJIS対応&高速版) – Qiita
importCsv/importCsv.gs at master · prog-mitsu/importCsv · GitHub
A Software Engineer Blog: Google Apps Scriptでのファイル入出力
GASでExcelファイルをSpreadsheetに変換する (再) – Qiita
Google Apps ScriptでShift_JIS変換したcsvをメール添付送信 – Qiita
テキストファイルをJavaScriptで読み込む方法とは【メンターが回答】 | TechAcademyマガジン
テキストファイルを読み込む-JavaScript入門(HTML5編)
JavaScriptでファイル処理! JSONやCSVなどのファイルを読み込もう | 侍エンジニア塾ブログ(Samurai Blog) – プログラミング入門者向けサイト

JavaScriptでShift_JISのcsvを読み込む(文字化け対策) – GUNMA GIS GEEK
JS_コード変換例、
GASで任意のスプレットシートの値を読み込む – クジラ机ブログ
Google Apps Script でファイルを保存してみる

こちらの記事もどうぞ