見出し画像

#109 ふきだしくんの内容を、Google スライドに変換する(続)

今回の記事は、以前の #107 についての更新履歴です。
やさしい方から、以下の記事で紹介しているプログラムに対して、

読点も半角カンマと認識されてしまうため
ss.getRange('A:A').splitTextToColumns(",");
の方が良いと思います

とアドバイスをいただきました。

元のプログラムでは 32行目の部分です。プログラムの挙動については、上記の記事で説明していますが、スプレッドシートに貼り付けられた、CSV 形式のデータをセルごとに分ける処理です。

指摘いただいた部分

記憶が正しければ、このプログラムは「拡張機能」→「マクロ」→「マクロを記録」で、「データ」→「テキストを列に分割」の処理を行って、処理を GAS のプログラムとして記録させたものを流用しています。

「データ」→「テキストを列に分割」

深く考えずに、このマクロとして書き出されたプログラムをそのまま使っていましたが、読点も区切りとして処理してしまうとのこと。

以下のようなプログラムを作成して、実際に確認してみました。実際のプログラムの冒頭部分だけを切り抜いたものです。

function dataSplit() {
  let ss = SpreadsheetApp.getActive();

  ss.getRange('A:A').splitTextToColumns(SpreadsheetApp.TextToColumnsDelimiter.COMMA);

}

上記の関数で処理すると、

あ、あ,あ.あ,あ.あ

というデータで

  • 、 (全角の読点)

  • , (全角のカンマ)

  • . (全角のピリオド)

  • , (半角のカンマ)

  • . (半角のピリオド)

で区切ったデータを処理すると、下図のように

  • 、 (全角の読点)

  • , (全角のカンマ)

  • , (半角のカンマ)

で分割されました。「半角のカンマ」だけでなく、「全角の読点」「全角のカンマ」でも分割されていることがわかります。

実行結果(全角文字の記号でも分割される)

ここで使われている SpreadsheetApp.TextToColumnsDelimiter.COMMA は、下記 URL のリファレンスで説明されているものです。

リファレンスの抜粋(スクリーンショット)

JavaScript の文字列を分割するための split メソッドについては、以下 URL で説明されていますが、Google スプレッドシートの split メソッドは少し賢く処理してくれているようです。

とは言え、今回のプログラムの場合には、「全角の読点(、)」や「全角のカンマ(,)」で分割されてしまうのは意図した動作ではないように感じられます。

アドバイスいただいた通り、当該行を以下のように変更しておきました。

変更後のプログラム(変更前のプログラムは、コメントとして残してあります)
/**
 * 列 A に貼り付けられた「ふきだしくん」の付箋情報を CSV 形式で書き出したものを、
 * 列ごとに分割するとともに、プログラムで処理するために整形する。
 */
function dataSplit() {
  let ss = SpreadsheetApp.getActive();

/*
  ss.getRange('A:A').splitTextToColumns(SpreadsheetApp.TextToColumnsDelimiter.COMMA);
*/
  // 読点も半角カンマと認識されてしまうため変更   2023/12/22
  ss.getRange('A:A').splitTextToColumns(",");
  

上記のようなプログラムに変更することで、「全角の読点」「全角のカンマ」では分割されず、「半角のカンマ」だけで分割されるようになりました。

変更後のプログラムでの分割後

修正したプログラムは、元の記事のプログラムに上書きしてありますので、不都合を感じていた方はコピーし直してください。

こうやって公開している情報に、アドバイスをいただけるのはとてもありがたい。😍 勉強になります。これからも精進していきます!

いいなと思ったら応援しよう!