2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GASでスプレッドシート内のすべてのセルを翻訳する

Posted at

はじめに

こんにちは。新しいPCのセットアップのキーボードの配置になれず、ちょっと苦戦してます、筆者です :innocent: FnキーとCtrlキーとPgUpPdDnがまだ慣れません。。

さて、今回はスプレッドシート内がすべて韓国語のシートを日本語に翻訳する機会がありましたので、そのやり方を共有します。

前提

  1. 韓国語 => 日本語に翻訳する.
  2. 韓国語のシート名はko.
  3. 日本語のシート名はja.
  4. シート内のセルはセル結合されているものも含む.

方針

  1. シート「ja」が既に存在する場合を加味しシート「ja」を削除する.
  2. シート「ko」をコピーしてシート「ja」と名前を付ける.
  3. 2のデータをすべて取得.
  4. 3のデータを1つずつ翻訳する.
  5. 4を元データに置き換える.

スクリプトはこちら↓

const main = () => {
  // すでに翻訳する済みのシート「ja」があれば削除する.
  SpreadsheetApp
    .getActiveSpreadsheet()
    .deleteSheet(
      SpreadsheetApp
      .getActiveSpreadsheet()
      .getSheetByName('ja')
    )

  // 翻訳前のシート「ko」をコピーして「ja」を作成する.
  const sheet = SpreadsheetApp
    .getActiveSpreadsheet()
    .getSheetByName('ko')
    .copyTo(SpreadsheetApp.getActiveSpreadsheet())
    .setName('ja')

  // シート「ja」を1セルずつ翻訳して書き換える.
  sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn())
    .getValues()
    .forEach((r, i) => {
      r.forEach((c, j) => {
        if (c) {
          sheet.getRange(i + 1, j + 1).setValue(LanguageApp.translate(c, 'ko', 'ja'))
          Utilities.sleep(1000)
        }
      })
    })
}

おわりに

書いてから気づきました、もしかしたらスプレッドシートのアドオンであるかもしれないことに...。
あればそちらを使った方がいいかもしれません :bow:

ただ、ほかの処理に乗せたいとかあるのであれば、GASでやるのはありだと思います。
トリガーとかもあるので:thumbsup:

参考になれば幸いです!
それでは!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?