Google Apps Script

その発想はなかった!目から鱗が落ちるGoogle Apps Scriptで同じ文字列を繰り返す方法

仕事柄、「Google Apps Script」が手放せません。
「V8 Runtime」にアップデートされてからいろいろ覚え、時間のある時にコツコツ書き換えています。
今回、スペースによるパディングをした方が良いものがあって、どうやったらよいかと考えていました。

例えば、
「1」
「1,000」
を、
「  1」
「1,000」
とするイメージです。

他の言語だと同じ文字列を繰り返す関数があります。
じゃあ、「Google Apps Script」は?
今回は同じ文字列を繰り返す方法についてまとめてみました。

 

普通の発想ならどう書く?

repeat()を使います。
これはES6(ECMAScript 2015)からの書き方です。

function test1() {
  console.log('Happy'.repeat(3));
  // ⇒ HappyHappyHappy
}

 

Google Apps Scriptでは使えない?

公式ガイドでは、ES6にまだ対応してない(ES6 modules are not yet supported.)とあります。
試してみたところ、「Google Apps Script」でも作動はしました。
ただし、「(メニューバーの)表示 ⇒ ログ」には出力されたけれど、「Apps Script ダッシュボード」にはされなかったです。
心配な場合は、Google Apps ScriptがES6に対応するのを待ってからの方が良さそうです。

 

代わりの方法はある?

方法はいろいろありまして、私が「その発想はなかった!」と思わず声に出した書き方がこちらです。

function test() {
  console.log(Array(3+1).join('Happy'));
  // ⇒ HappyHappyHappy
}

join()は、配列を()内の文字をはさんでつなぐ関数です。
並みの発想なら、配列の方に繰り返したい文字をいれ、()内を空白にするところ。
それを逆にして、配列を空白に、()内に繰り返したい文字を入れるのが斬新なアイディアでした。
ちなみに、配列の要素数は繰り返したい数に「+1」するのがポイントです。

 

まとめ

Google Apps ScriptはまだES6に未対応ながら、repeat()は作動するようです。
それにしても、join()の使い方には目から鱗でした。
私もこんな柔軟な発想を持てるようになりたいです。

-Google Apps Script
-, , , , , , , , , ,