はじめに
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"))))
スクリーンショット
- 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 です。お楽しみに!🎉