スプシでマクロを始める

○○を始める

スプシでマクロを始めたいけど、どうればいいのかわからない方も、これを読めばスプシでマクロを始めることができます。
ここにあるサンプルコードをコピペするだけで、スプシのマクロを体験できます。

例として楽天カードの「利用のお知らせメール」の整形を自動で行うマクロを紹介しています。

まずはコードを貼り付ける

スプシでマクロを使うためにまずはスプシを開いて下さい。まっさらな新規シートでもいいですし、何かが入力されているシートでもいいです。

貼り付けるコードはこれ

今回使うサンプルのコードを以下に示します。最初は何が書いてあるか理解できなくても全く問題ありません。とりあえず、枠の中の文字をすべてコピーしてクリップボードに格納して下さい。

/** 楽天カード利用のお知らせメール整形マクロ */

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  let myActiveRange = spreadsheet.getActiveRange();
  //選択範囲の円を消去
  myActiveRange.createTextFinder(" 円").matchFormulaText(true).replaceAllWith("");
  //選択範囲の最初の列番号の取得・・・この値は結局使わない
  l = myActiveRange.getColumn();
  //選択範囲の最初の行番号の取得
  m = myActiveRange.getRow()
  //選択範囲の最後の行番号の取得
  n = myActiveRange.getLastRow();
  //不要な行を下から削除
  spreadsheet.getCurrentCell().offset(n-m, 0, 1, 3).activate();
    for(let i = n-m; i > 0;i--){
    spreadsheet.getCurrentCell().offset(-1, 0, 1, 3).activate();
     //iを4で割った余りが1じゃなければ、行を削除
     if (i%4 != 1){
       spreadsheet.getActiveRange().deleteCells(SpreadsheetApp.Dimension.ROWS);
     } 
    }
};

マクロを書く場所を開く

メニュー「機能拡張」の「Apps Script」をクリックして下さい。

すると新たなページが表示され、その中に下の図ような文字が書かれているスペースがあると思います。ここが、マクロのコード(プログラム)を書く場所です。

この部分(function~}まで)をすべて選択して下さい。

そうしたら、先ほどクリップボードにコピーしたコードを貼り付けて下さい。
この時、許可を求めるメッセージが出たら許可して下さい。今、下の図のようになっているはずです。

ここで、一旦スプシのシートに戻ります。

マクロを動かす準備

マクロを作る目的はシートに書かれている内容を分析したり、まとめたりすることが多いと思います。
ここでも、マクロの対象となるデータをシートに入れておきましょう。

マクロの対象となるサンプルデータはこれ

下のテーブルをすべてコピーしてスプシに貼り付けて下さい。

2024/06/01GOOGLE PLAY JAPAN160 円
支払方法:1回 | 支払月:2024/07 | 利用者:本人  
   
   
2024/06/01GOOGLE PLAY JAPAN160 円
支払方法:1回 | 支払月:2024/07 | 利用者:本人  
   
   
2024/06/01GOOGLE PLAY JAPAN480 円
支払方法:1回 | 支払月:2024/07 | 利用者:本人  
   
   
2024/06/01GOOGLE PLAY JAPAN1,000 円
支払方法:1回 | 支払月:2024/07 | 利用者:本人  
   
   
2024/06/01GOOGLE PLAY JAPAN1,000 円

データの貼り付け

上の表を貼り付けたところ、私のスプシではこんな感じになりました。

これは、楽天カードから来たメールの一部です。メールを直接貼り付ければ、こんな感じになるのですが、今回はどちらでもいいです。

マクロを使う

もう一度マクロのページに戻って下さい。

マクロに名前を付ける

先ほどコードを貼り付けてそのまま放置していましたが、マクロを使う前にマクロに名前を付けましょう。「無題のプロジェクト」と書かれている部分をクリックして下さい。

適当な名前を入力します。ここでは「楽天カード利用」と入れて、「名前の変更」をクリックします。

マクロの保存

マクロを実行する前に保存する必要があります。「プロジェクトの保存アイコン」をクリックします。
(フロッピーの絵が伝わるのかおじさんは心配だよ)

保存が済むとアイコンが薄くなります。ここで再びシートに戻ります。

データの選択

マクロの操作対象となるデータを選択します。さきほどのコピーのあとで選択を解除してしまった人は、下図のようにもう一度選択し直して下さい。

マクロの実行

いよいよマクロの実行ですが、最初に安全を守るための警告をいくつか突破する必要があります。

シートからマクロを使えるようにする

シートからマクロを呼び出せるようにマクロを登録します。

メニュー「機能拡張」の「マクロ」ー「マクロをインポート」を選択します。

下のメッセージが出てきたら「関数の追加」をクリックします。

追加が済んだらウインドウを閉じます。

マクロに名前を付ける(2回目)

メニュー「機能拡張」の「マクロ」ー「マクロを管理」を選択します。

「myFunction」の部分を適当に変更します。ここでは、ここでは「楽天カード利用」と入れて、「更新」をクリックします。既視感がありますが気にしないことにします。

マクロの実行

メニュー「機能拡張」の「マクロ」ー「楽天カード利用」を選択します。

初回に限り、以下のメッセージが出ます。

OKして下さい。続けて次のメッセージが出ます。

アカウントの上をクリックして下さい。続けて次のメッセージが出ます。

左下の「詳細」をクリックします。画面が次のように変わります。

「楽天カード利用(安全ではないページ)に移動」をクリックします。次の画面を下までスクロールして下さい。

「許可」をクリックします。

マクロの実行(本番)

これでマクロを実行する準備がすべて整いました。安全のための確認とは言え、疲れますね。

実行するマクロの選択

メニュー「機能拡張」の「マクロ」ー「楽天カード利用」を選択します。

下の図のようになれば成功です。

何が起きたのか

今、何が起きたかというと、まず右の列の金額の後ろにあった「円」が消えました。これは、「すべて置換」という命令が実行されたからです。
次に日付や金額が書かれている以外の行が削除されました。4行おきに日付や金額が書かれている行が現れるため、行数を4で割った余りに応じて行を消すか消さないかを判断するプログラムが書かれています。

お分かり頂けただろうか

マクロによる「処理の自動化」を経験して頂きましたが、マクロの力をお分かり頂けたでしょうか。

スプシマクロの言語(GAS)

スプシのマクロはGAS(ガス)と呼ばれています。GASは、Java script(ジャバ スクリプト)というプログラミング言語をベースに作られています。今後、スプシのマクロを自分で作るとき、わからないことを検索する際は”GAS ○○”と検索すると知りたいことがみつかりやすいと思います。スプシの関数はエクセルとほぼ同じですが、マクロ言語はエクセルのVBAとは大きく異なっています。

エクセルマクロとの比較

今回と同じ処理のエクセルのマクロ(VBA)はこんな感じです。

    '選択範囲の円を消去
    Selection.Replace What:=" 円", Replacement:="", LookAt:=xlPart, MatchCase:=True

    '選択範囲の行数    
    n = Selection.Rows.Count
    
    ActiveCell.Offset(n - 2).Select
    Range(Selection, Selection.Offset(0, 2)).Select
    
    '不要な行を下から削除
    For i = n - 2 To 1 Step -1
      If Not (i Mod 4) = 0 Then
        Selection.Delete Shift:=xlUp
      End If
      ActiveCell.Offset(-1, 0).Select
      Range(Selection, Selection.Offset(0, 2)).Select
    Next

興味のある方は、エクセルでマクロを使うのが初めての人向けに、このマクロを実行するまでを説明していますので、よろしければこちらをご覧下さい。

Webアプリ版

こちらのページでWebアプリ版も公開しました。

本日はここまで!最後までお付き合いありがとうございました。

タイトルとURLをコピーしました