前提
GASで文字列から配列を作成して、それをテキストファイルで出力するということを行いたいです。
ですが、いざ出力してみると角括弧が外れています。これはなぜなのでしょうか?
myFunction3の場合だとうまくいきました。また、ファイルの出力はこちらを参考にしました。
調べても理由がわからず、思いつく限り色々試してみたのですがうまくいきませんでした。。。
どの様にすれば良いのでしょうか?どなたかわかる方はご教授ください。
よろしくお願いいたします。
実現したいこと
- 配列をテキストファイルとして出力したい
発生している問題
下記のように角括弧が外れてしまう。
[[あいうえお], [ かきくけこ], [ さしすせそ], [ たちつてと], [ なにぬねの~~]] ↓ ↓ ↓ ↓ ↓ ↓ あいうえお, かきくけこ, さしすせそ, たちつてと, なにぬねの~~
該当のソースコード
JavaScript
1function myFunction2() { 2 3 const text = `あいうえお 4 かきくけこ 5 さしすせそ 6 たちつてと 7 なにぬねの~~` 8 9 let text_Array = text.split("\n") 10 let text_Array2 = [] 11 12 for (i=0;i<text_Array.length;i++){ 13 text_Array2[i] = [text_Array[i]] 14 } 15 16 Logger.log(text_Array2); 17 18 const folderId = '▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲'; 19 20 // 出力するファイル名 21 const fileName = 'detasetArray.txt'; 22 23 // 出力するコンテンツ 24 let contents = text_Array2; 25 //let contents = text_Array2.toString(); 26 //let contents = Logger.getLog(); 27 28 //contents = contents.replace(/\[/gm, '\[').replace(/\]/gm, '\]'); 29 30 Logger.log(typeof(contents)) 31 32 // テキストファイル書き出し 33 createTextFile_2(folderId, fileName, contents); 34} 35 36function myFunction3() { 37 38 const folderId = '▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲'; 39 40 // 出力するファイル名 41 const fileName = 'detasetArray.txt'; 42 43 // 出力するコンテンツ 44 let contents = "[[あいうえお], [ かきくけこ], [ さしすせそ], [ たちつてと], [ なにぬねの~~]]" 45 46 Logger.log(typeof(contents)) 47 48 // テキストファイル書き出し 49 createTextFile_2(folderId, fileName, contents); 50} 51 52/** 53 * CSVファイル書き出し 54 * @param {string} folderId フォルダID 55 * @param {string} fileName ファイル名 56 * @param {string} contents ファイルの内容 57 */ 58function createTextFile_2(folderId, fileName, contents) { 59 60 // コンテンツタイプ 61 const contentType = MimeType.PLAIN_TEXT; //JAVASCRIPT; RTF; 62 63 // 文字コード 64 const charset = 'UTF-8'; 65 66 // 出力するフォルダ 67 const folder = DriveApp.getFolderById(folderId); 68 69 // Blob を作成する 70 const blob = Utilities.newBlob('', contentType, fileName).setDataFromString(contents, charset); 71 72 // ファイルに保存 73 folder.createFile(blob); 74}
試したこと
- toStringで文字列に変換。
- getLogでログを取得。角括弧も出力されたが配列が長いので途中までしかない。
- replaceで角括弧をエスケープ。できているのかわからない。。。
- コンテンツタイプを変更。
解決方法
角括弧を配列に結合した。
JavaScript
1for (i=0;i<text_Array.length;i++){ 2 text_Array2[i] = "[" + text_Array[i] + "]" 3 } 4 5 text_Array2 = "[" + text_Array2 + "]"

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/20 02:37