質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

1881閲覧

javascript(gas)の配列の取り出し方がわからない

madebyjun

総合スコア9

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/05/13 17:20

GASでdeeplのapiからJSONを取得し、そのJSONから変換したオブジェクトに入っている"text"を取得してセルに表示する関数を書いているのですが、様々なサイトに書いてある配列の取り出し方ではうまく目的の文字列が取り出せません。
とりあえず思いつくものをLoggerに吐かせたんですが、なぜかnullが入っています。undefinedならともかく、nullが入っているのは解せないんですが、なにか指定の方法がまずいのでしょうか?

GAS

1function deeplapi(originalValue, translateFrom, translateTo) { 2 Logger.log(originalValue.length); 3 if ( originalValue.length > 0 ) { 4 var response = UrlFetchApp.fetch("https://api-free.deepl.com/v2/translate?auth_key=XXXX&text="+ originalValue +"&target_lang="+ translateTo +"&source_lang="+ translateFrom +"");//deepl APIから取得 5 var json=JSON.parse(response.getContentText());//JSONをオブジェクトに 6 Logger.log(response);//responseをlogに記録 7 Logger.log(json);//jsonをlogに記録 8 Logger.log(json["translations"]["detected_source_language"]);//ここがnullになる 9 Logger.log(json["translations.text"]);//ここもnullになる 10 } else { 11 Logger.log("missed");//何も文字列が入っていなければ失敗と返す。 12 return ''; 13 } 14}

Log

12021/05/14 1:58:13 情報 22.0 22021/05/14 1:58:14 情報 {"translations":[{"detected_source_language":"JA","text":"It's been a great day! We can grow overwhelmingly tomorrow."}]} 32021/05/14 1:58:14 情報 {translations=[{detected_source_language=JA, text=It's been a great day! We can grow overwhelmingly tomorrow.}]} 42021/05/14 1:58:14 情報 null 52021/05/14 1:58:14 情報 null

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

js

1Logger.log(json["translations"][0]["detected_source_language"]); 2Logger.log(json["translations"][0].text);

投稿2021/05/13 17:32

kei344

総合スコア69398

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

madebyjun

2021/05/14 15:56

回答ありがとうございました!デバッグ画面でも構造を確認したんですが、念の為確認させてください。 これはjsonという連想配列の中に、translationsという1つのオブジェクトがあって、そのオブジェクトの中配列として1つ項目があり、その項目の中に更に連想配列としてdetected_source_languageやtextがあるという捉え方でよろしいんでしょうか?
kei344

2021/05/14 19:40

「jsonというオブジェクトの中に、translationsという配列があって、その項目の一つにdetected_source_languageやtextというプロパティを持っているオブジェクトがある」くらいでしょうか。 細かいことを言えば、他の言語にあるような「連想配列」はJavaScriptでは「オブジェクト」ではなく「Map」が近いです(「オブジェクト」の説明の中で便宜的に「連想配列」と解説している書籍やサイトはあるかもしれないが)。しばらく勉強を進めるまでは「連想配列」は置いておきましょう。
madebyjun

2021/05/15 04:09

詳しくご回答頂きまして本当にありがとうございました! なるほど、連想配列はちょっと少し置いておきます。 これからもっともっと勉強していきたいと思います。どうもありがとうございました!
guest

0

kei344さんの回答が正しいです。

デバッグで配列の構造を確認するとこういったトラブルを回避することができると思いますよ!

投稿2021/05/14 15:03

Tatsunosuke

総合スコア599

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

madebyjun

2021/05/14 15:49

回答ありがとうございました!そもそもデバッグ機能すら知りませんでして、使ってみたら本当に便利でした!こんなものがあったんですね…これからバシバシ使っていきます!
Tatsunosuke

2021/05/14 15:52

はーい!頑張ってください!応援してます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問