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

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

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

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

Q&A

解決済

1回答

235閲覧

GAS_リストからgooglemap画像にピンを立てたいが16個以上立たない

kihokutarou

総合スコア60

Google Apps Script

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

0グッド

1クリップ

投稿2024/09/30 08:28

実現したいこと

https://myfunc.jp/items/00118/index.html#:~:text=%E4%BD%8F%E6%89%80%E3%83%AA%E3%82%B9%E3%83%88%E3%81%8B%E3%82%89%E5%9C%B0%E5%9B%B3%E7%94%BB
上記サイト(その他サイトも参考にしましたが同じ)の要領でリストにある住所すべてにピンが立った状態の画像を生成したい。

ここに質問の内容を詳しく書いてください。
リストが15個までならピンが立つが、16個以上になると1つもピンが立たない。
情報を探していますが同様のケースが見つかりません。

発生している問題・エラーメッセージ

エラーなし

該当のソースコード

GAS

1function generate_static_maps() { 2 3 // アクティブなスプレッドシートを開く 4 const ss = SpreadsheetApp.getActiveSpreadsheet(); 5 6 // アクティブなシートを開く 7 const sheet = ss.getActiveSheet(); 8 9 // シートに入力されている値を取得する。使用されている範囲のオブジェクトを取得 10 let range = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn()); 11 12 // セルの値を取得する 13 let values = range.getValues(); 14 15 // 静的な地図を生成する 16 let map = Maps.newStaticMap(); 17 map.setLanguage('ja') // 地図の言語指定 18 map.setSize(500, 500); // 地図サイズ 19 map.setZoom(15); // 地図の縮尺。大きいほど拡大される。 20 map.setCenter(values[1][1]); // 地図の中心地点を指定する。住所リストの1行目とする 21 22 // 住所の数だけピン(マーカー)を立てていく 23 for (let i = 1; i < values.length; i++) { 24 25 // マーカーのスタイルを設定。サイズMID、色は赤、値はセルの行番号とする 26 map.setMarkerStyle(Maps.StaticMap.MarkerSize.MID, Maps.StaticMap.Color.RED, i + 1); 27 28 // 住所をもとにマーカーをセット 29 map.addMarker(values[i]); 30 31 }

試したこと

回線速度や時間帯かとも思い、通信環境や端末、アクセス時間帯などを変えてみるも同じ。
for文の範囲を短く試してみて15個までなら正常な動きをすることを確認。

何が原因なのか、仕様なのか、解決策があれば教えてください。

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

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

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

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

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

YAmaGNZ

2024/09/30 12:04 編集

setMarkerStyleですがリファレンス(https://developers.google.com/apps-script/reference/maps/static-map?hl=ja#setMarkerStyle(String,String,String) ) には label String 1 文字の A ~ Z または 0 ~ 9 を含む文字列。 とありますのでその範囲で変わるようにするなどしてみてはどうでしょうか? またマーカーのスタイルを変更しないのであれば1回セットしてその後は変更しないなどしてみてはどうでしょうか。
kihokutarou

2024/10/01 00:40

ご回答ありがとうございます。 回答いただいた内容はピンのラベルについてのものですが、こちらは"S"としてみたり、SMALLにしたり、もしくはピン設定なしで試したりしておりますが関連しませんでした。 「16個以上でラベルがなくなる」ではなく「16個以上になるとピンが一切立たなくなる」という現象になります。
guest

回答1

0

ベストアンサー

実験してみました。
確かに15個以上になるとピンは表示されずにエラー表示がされます。
これについて調べたところ
Maps Static API のエラー メッセージ
こちらにある

Too many geocoded markers requested (max is 15). リクエストで、人間が読める住所を持つマーカーが最大許容数を超えています。最大 15 個です。なお、この制限は、ジオコーディングが必要な、人が読める形式の住所として指定されたマーカーにのみ適用されます。緯度と経度の座標で指定されたマーカーには適用されません。

に引っ掛かっているのではないかと思います。
住所から緯度、経度を求めてその値からマーカーを作成すれば15個の上限を回避することができそうです。

追記

javascript

1 // 住所をもとにマーカーをセット 2 var response = Maps.newGeocoder().geocode(values[i]); 3 map.addMarker(response.results[0].geometry.location.lat,response.results[0].geometry.location.lng);

と緯度、経度を求めてその座標でマーカーを作成すると16個以上のマーカーが作成できました。

さらに提示されているコードですとマーカーの文字が10個め以上のものが”1”となりました。
なのでマーカーの文字で識別する必要があるのであればコメントで指摘したようにマーカースタイルの文字の部分も変更する必要があるでしょう。

投稿2024/10/01 09:59

編集2024/10/01 11:06
YAmaGNZ

総合スコア10469

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

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

kihokutarou

2024/10/01 23:53

ご回答ありがとうございます。 ご指摘通り位置情報を取得後ピンを打つとうまくいきました。 2点気づかされました。 まずエラーに気づいていませんでした。下部の描写記述が実行されていることで疑っておりませんでした。次に住所からピンが打てないのだから経度緯度からも無理だろう、つまり仕様だなと半分決めてかかっていました。 勉強になりました、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問