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?

株式会社ACCESSAdvent Calendar 2024

Day 8

スプレッドシートを爆速で翻訳する / GOOGLETRANSLATE() MAP() LAMBDA() 関数の使い方

Last updated at Posted at 2024-12-07

はじめに

ACCESS Advent Calendar 2024 の8日目です。

今年一番お金と時間を無駄にしたことは「夏に家のエアコンクリーニングをして、1週間後に壊れてしなきゃ良かった」の渡邉直彦です。

スプレッドシートを爆速で翻訳する方法、GOOGLETRANSLATE(), MAP(), LAMBDA() 関数の使い方、をまとめます!

結論

以下のような関数をスプレッドシートに入力するとその下のセル全て翻訳してくれます。

日本語→英語翻訳時

=MAP(D2:D, LAMBDA(text, IF(text = "", "", GOOGLETRANSLATE(text, "ja", "en"))))

日本語→台湾語(繁体字)翻訳時

=MAP(D2:D, LAMBDA(text, IF(text = "", "", GOOGLETRANSLATE(text, "ja", "zh-TW"))))

スクリーンショット

image.png

  • B列:台湾語・繁体字(GOOGLETRANSLATE() による機械翻訳)
  • C列:英語(GOOGLETRANSLATE() による機械翻訳)
  • D列:日本語

背景

  • 2024/10韓国出張、2024/11台湾出張、と2ヶ月連続出張になり、準備が忙しすぎた
  • 「そこまで力を入れなくて良い、ある程度の精度で良い情報」を機械的に翻訳したい
    • フライト、オフィス住所、ホテル住所、タクシー予約、の情報など
  • 「ちゃんと意思疎通したい情報」の翻訳に時間を使いたい
    • 会議アジェンダ、狙い、の意識合わせなど

(ChatGPT さんによる)よく分かる解説

1段階目: GOOGLETRANSLATE()

機能

  • 指定したテキストを別の言語に翻訳

形式

=GOOGLETRANSLATE(text, "source_language_code", "target_language_code")
  • text: 翻訳したいテキスト
  • "source_language_code": 翻訳元の言語コード(例えば日本語)
  • "target_language_code": 翻訳先の言語コード(例えば英語)

  • 「こんにちは」→「hello」
=GOOGLETRANSLATE("こんにちは", "ja", "en")

2段階目:LAMBDA()

機能

LAMBDA関数は、カスタム関数を定義するためのもの。
単独でも使用可、MAP関数など他の関数と組み合わせて使用することも可。

形式

=LAMBDA(parameter, 処理)(引数)
  • parameter: 関数に渡す引数の名前
  • 処理: 引数に対して実行したい処理内容
  • 引数: 実際に関数に渡す値やセル参照

=LAMBDA(text, UPPER(text))(D2)

入力されたtextを大文字に変換する。
「hello」→「HELLO」

3段階目:MAP()

機能

指定した範囲内の各セルに対して同じ処理を適用する。
必ず LAMBDA() 関数と組み合わせて使用する。

形式

MAP(D2:D, LAMBDA(text, 処理))
  • D2:D: 処理対象となるセル範囲
  • LAMBDA(text, 処理): 各セルの値をtextとして受け取り、指定した処理を実行

=MAP(D2:D, LAMBDA(text, UPPER(text)))

D2から下の各セルのテキストを大文字に変換する。

4段階目:MAP() & LAMBDA() & GOOGLETRANSLATE()

=MAP(D2:D, LAMBDA(text, GOOGLETRANSLATE(text, "ja", "en")))

D2から下の各セルのテキストを英語に翻訳する。

5段階目:MAP() & LAMBDA() & GOOGLETRANSLATE() & IF()

最後に、IF関数を追加して、空セルへのエラー対策をします。

=MAP(D2:D, LAMBDA(text, IF(text = "", "", GOOGLETRANSLATE(text, "ja", "en"))))
  • IF(text = "", "", ...): セルが空の場合は空のままにし、そうでない場合のみ翻訳を実行

この追加により、空のセルに対してGOOGLETRANSLATEを実行することで発生する可能性のあるエラーを防止できます。

IF() が無いと、翻訳元セルが空の場合、翻訳先セルは以下のような表示になります。

#VALUE!

IF() があれば、翻訳先セルは空欄です。

参考:公式ヘルプページ

おわりに

ACCESS Advent Calendar 2024 、明日の担当は @aFumihiroSaito です。お楽しみに!🎉

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?