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

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

新規登録して質問してみよう
ただいま回答率
85.31%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Google Apps Script

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

Q&A

1回答

656閲覧

GAS CSV 囲み文字をダブルクォートで出力する方法

ju_n08930614

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Google Apps Script

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

0グッド

1クリップ

投稿2024/09/12 08:47

実現したいこと

GASにてCSV出力する際に、囲み文字をダブルクォートにしたい

発生している問題・分からないこと

GASを使用してCSVファイルを出力したいのですが、
囲み文字をダブルクォートにする方法がわかりません・・
基礎から学ぼうと思うのですが、急ぎ対応する必要がありご教授頂けますでしょうか。

該当のソースコード

function createCsv() { const csv = loadData(); const blob = createBlob(csv); writeDrive(blob); } function loadData() { const data = SpreadsheetApp.getActiveSheet().getDataRange().getValues(); let csv = ''; for(let i = 0; i < data.length; i++) { csv += data[i].join(',') + "\r\n"; } return csv; } function createBlob(csv) { const fileName = 'テスト.csv' const contentType = 'text/csv'; const charset = 'utf-8'; const blob = Utilities.newBlob('', contentType, fileName).setDataFromString(csv, charset); return blob; } function writeDrive(blob) { const folderId = 'folderIdxxxyyyzzz'; const drive = DriveApp.getFolderById(folderId); drive.createFile(blob); }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

カンマ区切り、Shift-JISで出力する方法はわかりましたが、囲み文字を指定する方法がわからない

補足

特になし

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

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

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

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

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

YAmaGNZ

2024/09/12 10:50

「gas csv 出力 ダブルクォーテーション」とでも検索すれば情報が出てきませんかね?
YellowGreen

2024/09/12 18:30

ご提示のコードにダブルクォートに関する部分(試行錯誤でも)が全く含まれていないので、ご希望の処理がよくわからないのですが... 囲み文字をダブルクォートにするとは ①やⒶを"1"や"A"に変換してからCSVにしたいということでしょうか それとも囲み文字ではなく 数値も含めて全てのセルの値を "あいうえお","かきくけこ","12,345","0.987" のようにダブルクォートで囲んだ文字列に変換したCSVにしたいということでしょうか
guest

回答1

0

コメント欄で希望の動作を伺いましたが、ご返事がないので、
囲み文字を文字どおりに理解して①やⒶを引用符付きの文字"1"や"A"として出力したい場合のコードの例をお示しします
セルの値全体を引用符で囲む方法もこのコードのコメント部分が参考になると思います

JavaScript

1function loadData() { 2 const data = SpreadsheetApp.getActiveSheet().getDataRange().getValues(); 3 let csv = ''; 4 for (let i = 0; i < data.length; i++) { 5 csv += data[i] 6 // .map(v => '"' + v .toString() + '"') 7 .map(v => v.toString().replace(/[①-⑳]/g, s => '"' + String.fromCharCode(s.charCodeAt(0) - 0x242F) + '"')) 8 .map(v => v.toString().replace(/[Ⓐ-Ⓩ]/g, s => '"' + String.fromCharCode(s.charCodeAt(0) - 0x2475) + '"')) 9 .map(v => v.toString().replace(/[ⓐ-ⓩ]/g, s => '"' + String.fromCharCode(s.charCodeAt(0) - 0x246F) + '"')) 10 .map(v => v.toString().replace(/""/g, '')) 11 .join(',') + "\r\n"; 12 } 13 return csv; 14}

投稿2024/09/13 23:09

編集2024/09/13 23:10
YellowGreen

総合スコア861

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

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

YellowGreen

2024/09/13 23:23

日付や数値などを、画面表示のままR6.9.14(土)や0.12%などの文字列として取得したいときは、 getValues()をgetDisplayValues()にすると、表示形式で選んだ表示どおりの文字列として取得できます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問