JA5CQH/4のblog ( + JO4EXC ) > 2025年

Google MyMaps 「公園アワードスポット」( 最終編:CSVファイル作成手順 )


たくさんの局長さんのご要望にお応えし纏めてみました …. ..( 写真:巨大な立ち木と高さ比べ )

1.はじめに

「スポット表示の定義CSVファイル」を作成するスクリプト「function_myAwardFunction」を公開します。生成物の「スポット表示の定義CSVファイル」はGoogle社の利用規約範囲での使用が可能ですが当面は個人範囲での利用を推奨します。

2.必要な準備物

1)ネット環境
2)パソコン(Windows11等)
3)GoogleChromeブラウザ(Googleアカウントでログイン)
4)アワード用csvファイル(事前に拡張子.mcsvから.csvへ変更)

・ n点盛.mcsvなどファイルも利用可能、「てんこ盛.csv」のファイル名で準備しておく

5)コピペ用のスクリプト「function_myAwardFunction」は本投稿記事内から入手する

3.作成手順

1)GoogleChromeブラウザのGoogleアプリメニューから「スプレッドシート」を選択

・ 以下、Googleスプレッドシートの画面操作へと続く

2)新しいスプレッドシートを作成「空白のスプレッドシート」を選択

・ 必要に応じて「無題のスプレッドシート」の名前変更(後で名前変更が可能)

3)メニュー「ファイル、インポート、アップロード」を選択

・ 「てんこ盛.csv」をアップロード(参照またはファイルをドラッグ)
・  インポート場所   「スプレッドシートを置換する」を選択
・  区切り文字の種類  「自動的に検出する」      を選択
・ 「□テキストを数値、日付、数式に変換する」    のチェックを外す
・ 「データをインポート」を選択しインポートを開始する

4)メニュー「拡張機能、Apps Script」でスクリプト記述の画面を表示 (ブラウザの別タブで開かれる)

・  右側の編集エリアに記述の「function myFunction(){}」を消去
・ スクリプト「function_myAwardFunction」の内容を貼り付け(コピペ)
・ スクリプトの「位置情報を取得する設定」でスポット情報を作成する範囲および条件を指定

5)編集エリアの上にあるメニュー「関数名 myAwardFunction 」を選択し「実行」を選択

・ 「承認が必要です」画面で「権限を確認」、自身の「Googleアカウント」を選択
・ 「詳細」を選択、「無題のプロジェクト(安全ではないページ)に移動」を選択
・ 「無題のプロジェクト が Google アカウントへのアクセスを求めています」を確認し「続行」を選択
・ 「実行開始」を示すメッセージが「編集エリア」の下の「実行ログ」欄に表示
・ 「実行完了」まで最大6分間待つ( 一例:約200スポットのPK岡山県は約3分で終了 )

6)「シート名:てんこ盛」の横に自動作成された「OUT_NAMEで定義したシート名のシート」を選択

・ メニュー「ファイル、ダウンロード、カンマ区切り形式(csv)」を選択
・ 「無題のスプレッドシート – SPOT_PK31.csv」を「20251231_SPOT_PK31.csv」等に名称変更し保存

7)保存したファイルはGoogleMyMapsなどで「スポット情報のCSVファイル」として利用できる

・ 先に公開の記事を参照

Google MyMaps 「公園アワードスポット」
Google MyMaps 「公園アワードスポット」( 続編:設定手順 )
Google MyMaps 「公園アワードスポット」( 続編2:てんこもり )

・ スプレッドシートの内容は、自身のクラウド「ドライブ」に自動保存されていて再利用が可能

4.公開スクリプトのソース ( function_myAwardFunction コピペ用 )

function myAwardFunction() {

// ------------  位置情報を取得する設定 ここから ---- google apps script(略 GAS)無償版は6分間の連続使用時間制限あり -----------
  const RUN_PHASE_1 = 1;          // 1: 前準備      、 0(1以外): 何もしない
  const RUN_PHASE_2 = 1;          // 1: 位置情報取得、 0(1以外): 何もしない
  const PREF_NUM    = "31";       // 岡山県
  const CSV_NAME    = "てんこ盛";  // 拡張子.mcsvを.csvに置換してインポートしたファイル名
  const AWARD_CODE  = "PK";       // アワードコード "PK": 公園アワードを指定 (先頭 半角2文字または漢字1文字) 、 "": すべて対象
  const AREATOP_ROW = 16000;      // 0以外: 抽出を行う開始行 、 0: FINDTOP_ROW で示す行から抽出
  const AREAEND_ROW = 16600;      // 0以外: 抽出を行う終了行 、 0:最終行まで抽出
  const OUT_NAME = "SPOT_PK31";   // 位置情報取得シート名(取得後にCSV形式でダウンロードしてMyMapsへインポートします)
// ------------  位置情報を取得する設定 ここまで ------------------------------------------------------------------------

  const FINDTOP_ROW = 2;
  const S2_SPOT_COL = 1;
  const S2_ADRS_COL = 2;
  const S2_LATI_COL = 3;
  const S2_LONG_COL = 4;
  const S2_JCCG_COL = 5;
  const S2_AWRD_COL = 6;
  const S2_FIND_COL = 7;
  const S1_AWRD_COL = 1;
  const S1_NAME_COL = 2;
  const S1_CODE_COL = 3;
  const S1_ADRS_COL = 4;
  // const S1_COLS = 4;
  // const S1_title = ["アワード","名称","Code","所在地"];
  const S2_COLS = 7;
  const S2_title = ["スポット名称","住所","緯度","経度","JCCG","アワード","検索ワード"];

  var spreadsheet_2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(OUT_NAME);

  if (RUN_PHASE_1 == 1){ // 1: 前準備 、 1以外: 何もしない
    var spreadsheet_1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(CSV_NAME);
    if (spreadsheet_2 != null ){
      // 現在アクティブなスプレッドシートを取得
      let mySheet = SpreadsheetApp.getActiveSpreadsheet();
      // 取得したスプレッドシートでシート名を入力し、削除したいシートを取得
      let delSheet = mySheet.getSheetByName(OUT_NAME);
      // deleteSheetメソッドでシート削除を実行
      mySheet.deleteSheet(delSheet);
    }
    const newSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet();
    newSheet.setName(OUT_NAME);
    spreadsheet_2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(OUT_NAME);
    spreadsheet_2.appendRow(S2_title);  //Titl  var S1_award;
    var S1_name;
    var S1_code;
    var S1_adrs;
    var S1_award;
    var S1_cord;
    var strfind;
    var topRow1;
    var endRow1;

    var endrow1 = spreadsheet_1.getLastRow();

    if (AREATOP_ROW != 0 ) topRow1 = AREATOP_ROW;
    else                   topRow1 = FINDTOP_ROW;

    if (AREAEND_ROW != 0 ) endrow1 = AREAEND_ROW;
    else                   endrow1 = FINDTOP_ROW;

    for(var i=topRow1; i<=endrow1; i++){

      S1_code  = spreadsheet_1.getRange(i,S1_CODE_COL).getValue();
      S1_award = spreadsheet_1.getRange(i,S1_AWRD_COL).getValue();
      if ((S1_code.substring(0,2)==PREF_NUM)&&((S1_award.substring(0,2)==AWARD_CODE)||(AWARD_CODE==""))){

        S1_name  = spreadsheet_1.getRange(i,S1_NAME_COL).getValue();
        S1_adrs  = spreadsheet_1.getRange(i,S1_ADRS_COL).getValue();

        strfind = S1_name + " ( " + S1_adrs + " )";
        if ((S1_award.indexOf("RS") == 0)||(S1_award.indexOf("□") == 0)){
          S2_find = "道の駅 " + strfind;
          S2_spot = "RS-" + strfind;
        } else {
          S2_find = strfind;
          S2_spot = S1_award.substring(0, 3) + strfind;
        }
        S1_code = "'" + S1_code;  // テキスト扱い強制
        spreadsheet_2.appendRow([S2_spot,"","","",S1_code,S1_award,S2_find]);   // 行追加
      }
    }
  }

  if (RUN_PHASE_2 == 1){        // 1: 位置情報取得、 1以外: 何もしない

    var lastrow2 = spreadsheet_2.getLastRow();
    for(var i=FINDTOP_ROW; i<=lastrow2; i++){
      var findword = spreadsheet_2.getRange(i,S2_FIND_COL).getValue();
      var geocoder = Maps.newGeocoder();
      geocoder.setLanguage('ja');

      var response = geocoder.geocode(findword);
      if(response['results'][0] != null){
        spreadsheet_2.getRange(i,S2_LATI_COL).setValue(response['results'][0]['geometry']['location']['lat']);
        spreadsheet_2.getRange(i,S2_LONG_COL).setValue(response['results'][0]['geometry']['location']['lng']);
        spreadsheet_2.getRange(i,S2_ADRS_COL).setValue(response['results'][0]['formatted_address']);
      }
    }
  }
}
JA5CQH/4のblog ( + JO4EXC ) > 2025年

県内移動運用 PK145 北長瀬未来ふれあい総合公園

岡山市北区での所用を予定より早く終えることができ近場でのQRVとなりました。交信いただきました各局さんありがとうございました。

● ここは岡山市中心部近くにあり併設の有料パーキングを利用しました。最初の1時間は無料でその後30分毎に100円の料金設定です。有料パーキングは比較的広くて平日なのでガラスキ状態でしたが7m長のアンテナ利用にためらいがあり今回はスクリュードライバーアンテナ 「第一電波工業 SD-330/SDC-1」という控えめアンテナでのQRVです。飛び具合は2m弱なので7m(+AH-4)アンテナ比べると長さの差の2乗ほどの体感があります。でも自身がCQ側なので弱いながらも沢山の方から呼ばれるので助かります。(混信が多いきは…埋もれゼロになる…)。

● あと「%/4 岡山市北区#310101 / PK145北長瀬未来ふれあい総合公園%」という文字列。標準設定のHAMLOGには長すぎるので半角スペースを減らすなどの工夫が必要でした。

CQHLQRV [ 310101 岡山市北区 ] PK145北長瀬未来ふれあい総合公園
2025/12/08 14:13J – 2025/12/08 15:10J QRV=0:57 QSOs/h=47.37
FREQ  MODE JA0 JA1 JA2 JA3 JA4 JA5 JA6 JA7 JA8 JA9  DX TOTAL
7     CW     1  11   4   4   2   2   2   2   0   3   1    32
10    CW     0   4   3   0   2   0   1   1   1   0   1    13
TOTAL  —     1  15   7   4   4   2   3   3   1   3   2    45

7     CW    14:13J – 14:49J  QRV= 0:36  QSOs/h= 53.33
10    CW    14:54J – 15:10J  QRV= 0:16  QSOs/h= 48.75

COUNT  +0   +1   +2   +3   +4   +5   +6   +7   +8   +9 TOTAL
 00     –   43    2    –    –    –    –    –    –    –    45

● 岡山ドームがあります。

JA5CQH/4のblog ( + JO4EXC ) > 2025年

2025 FCWA CW QSOパーティー、KCWA CW コンテスト

2025/12/06~2025/12/07の2日間連続で楽しめました。交信いただいた各局さんありがとうございました。

● 合間の食事時間を除けばほぼフル参加、ただしKCWAは自治会の関係で18:16でCLしました。双方とも200QSOを目標にしていましたがFCMAは達成、KCWAは未達成でした。

● 総合成績については非公開ながら2日間連続したFCWAとKCWAとで双方に参加している局数を7MHz限定ですが集計(下表を参照)を行ってみました。双方でQSO頂いている局長さんがどのくらいの割合なのかを知るためです。

<割合計算 ここから>
全QSO数:263
FCWA、KCWAの双方でQSO
局数:46、
割合:(46×2)÷263×100≒35%
<割合計算 ここまで>

以上のような計算によって約1/3の局長さんとQSOしていただいていることが分かりました。後日に結果発表があったときに参加局全体から求めた割合と比較してみると傾向が更に見えてきそうです。

CQHLQRV [ TOTAL ]  FCWA、KCWA 7MHzバンド(抜粋)  JO4EXC
2025/12/06 09:12J – 2025/12/07 18:16J QRV=17:18 QSOs/h=15.26
FREQ  MODE JA0 JA1 JA2 JA3 JA4 JA5 JA6 JA7 JA8 JA9  DX TOTAL
7     CW    23  99  30  43  17  13  15  12   9   1   1   263
TOTAL  —    23  99  30  43  17  13  15  12   9   1   1   263


COUNT  +0   +1   +2   +3   +4   +5   +6   +7   +8   +9 TOTAL
 00     –  217   46    –    –    –    –    –    –    –   263

● 今回のニューアイテム ・・・ 手放しで喜べます。
10年以上前に入手していた製品です。最近のドライバとアプリが入手できたので 「F1、ESC、Enter」のキー割り付けが実現でき、キーヤーアプリ(CQHpc)で利用しました。

JA5CQH/4のblog ( + JO4EXC ) > 2025年

Whipアンテナ改善+県内移動運用 PK121 吉井川河川公園親水広場

7mホイップの改善と移動運用を目的にホームから車で30分ほどの河川敷に到着です。

●まずはアンテナから

アンテナの全貌(写真1)と下部のベース部分(写真2)です。振出しグラスポール(10m長の製品の5m版)の根元側にアルミパイプ2.5mで延長したものをATU(AH-4)を介して使っています。最近になってステンレス撚線ワイヤーの出し入れがスムーズにできなくなったことでグラスポールの伸縮もできにくくなりました。その改善とあわせステンレス撚線ワイヤー(導体抵抗が大きいのでロス大と思える)から銅撚線への変更を実施しました。銅撚線は細手のスピーカーケーブル平行線を割いたものを利用しています。
 

振出しグラスポールの中で蝶々結びのようにもつれていました。(写真3)(写真4の縦割れはテーピングで補修)。そこで先端のワイヤー引き出しを廃止し根元近くでエレメントの出し入れをできるようにして(写真5)グラスポール上端とエレメント上端を固定しました。これでグラスポールに与える伸縮時のストレスを幾分か軽減できればと思っています。
  

●そしてアンテナ改善後の移動運用

少し寒さを感じる天候でしたがアンテナの動作確認も兼ねて運用しました。今回の移動地も大好きな川辺運用です。各局さんQSO頂きありがとうございました。7MHzが1DayADJでした。(アンテナ改善効果はコンディション次第なのでわからない。。。)

CQHLQRV [ 3114 岡山県瀬戸内市 ] PK121 吉井川河川公園親水広場
2025/12/01 15:07J – 2025/12/01 16:28J QRV=1:21 QSOs/h=42.96
FREQ  MODE JA0 JA1 JA2 JA3 JA4 JA5 JA6 JA7 JA8 JA9  DX TOTAL
7     CW     4  14   7   3   2   1   2   2   2   1   1    39
10    CW     1   9   3   0   1   0   1   1   1   1   1    19
TOTAL  —     5  23  10   3   3   1   3   3   3   2   2    58


7     CW    15:07J – 16:02J  QRV= 0:55  QSOs/h= 42.55
10    CW    16:05J – 16:28J  QRV= 0:23  QSOs/h= 49.57


COUNT  +0   +1   +2   +3   +4   +5   +6   +7   +8   +9 TOTAL
 00     –   57    1    –    –    –    –    –    –    –    58