Translate

Post Date:2022年5月7日 

Googleスプレッドシートの更新された範囲をURLとして通知する

ゾウでもわかる Google Apps Script

シートの更新通知を使うと確認が必要のない更新通知も送られてくるので、自分に必要な項目が更新されたときだけに通知が欲しい。

また、どこが変更されたのかが分かると、通知を受けた人に優しい仕様となります。

象と散歩: Googleスプレッドシートの更新された値を知るで、変更された箇所の行番号と列番号を取得する方法を紹介しましたが、変更範囲をセル範囲が指定されたリンクとして作成するGASプログラムを作ってみました。


URLの取得

onEdit()関数については、象と散歩: Googleスプレッドシートの更新された値を知る で説明していますが、スプレッドシートが更新されたときに実行される関数です。

onEdit(e)	{
  var ssUrl = e.source.getUrl()	//スプレッドシートのURL
  console.log(ssUrl)
}

セルの内容が更新されると、上記の関数が実行されます。マニュアルで実行するとエラーとなりますので、セルの値を更新してログを確認してください。

onEdit()関数の引数に e を指定していますが、e.source でスプレッドシートオブジェクトが取得でき、getUrl()でスプレッドシートのURLが取得できます


シートはGIDパラメータで指定する

上記で取得したスプレッドシートのURLは、下記のような構成になっています。

https://docs.google.com/spreadsheets/d/xxxxx/edit

複数シートがある場合には、URLにGIDパラメータが付与されています。

https://docs.google.com/spreadsheets/d/xxxxx/edit#gid=749420395

最初のシート(シート 1)は、必ず gid=0 ですが、getSheetId() で GIDを取得することができます。

onEdit(e)	{
  var sheet = e.source.getActiveSheet()
  var sheetId = sheet.getSheetId()	//シートID
  console.log(sheetId)
} 

セル範囲はRANGEで指定する

セルを右クリックして"このセルへのリンクを取得"をクリックすると

範囲を指定してリンクを取得する

下記のようなURLが取得できます。

https://docs.google.com/spreadsheets/d/xxxxx/edit#gid=0&range=C2

また複数セルを選択した状態で右クリックして"この範囲のリンクを取得"をクリックすると下記のようなURLが取得できます。

https://docs.google.com/spreadsheets/d/xxxxx/edit#gid=0&range=A3:C3

"range=" で範囲を指定したURLを取得できます。


A1形式で範囲を取得する

onEdit()で実行されたときにrangeで変更範囲が取得できますが、A3:C3のようなA1形式で範囲を取得するには、range.getA1Notation() を使います

更新範囲がひとつのセルならA3、範囲ならA3:C3のように取得することができます。

onEdit(e)	{
  var sheetRange = e.range.getA1Notation()	//変更範囲
  console.log(sheetRange)
}

シートの値を変更して、ログを確認してください。複数セルの範囲は、シート上で範囲選択をしてコピペをすることで確認できます。


シートと範囲を指定したURLを作成

シートID(GID)と範囲(RANGE)を指定したURLを作成します。

function onEdit(e) {
  var ssUrl = e.source.getUrl()	//スプレッドシートのURL
  var sheet = e.source.getActiveSheet()
  var sheetId = sheet.getSheetId()	//シートID
  var sheetRange = e.range.getA1Notation()	//変更範囲
  var url = ssUrl + '#gid=' + sheetId + '&range=' + sheetRange
  console.log(url)
}

ログに出力されたURLをコピペして、範囲選択がされた状態でスプレッドシートが開くかを確認してください。


変更範囲の確認

特定の範囲が更新されたときだけ通知があるように、更新されたセルが対象としたいセル範囲内にあるかを確認します。

下記のサンプルプログラムでは、targetStartColumn, targetEndColumn で対象列を、targetStartRow, targetEndRow で対象行を指定しています。

下例では、C列の2行目から1000行目が更新されたかを確認するサンプルコードとなります。

function onEdit(e)  {
  var targetStarColumn =3 //対象セル(開始列)
  var targetEndColumn = 3 //対象セル(終了列) 
  var targetStartRow = 2  //対象セル(開始列)
  var targetEndRow = 1000 //対象セル(終了列)

  var rowStart = e.range.rowStart //更新開始行の取得
  var rowEnd = e.range.rowStart   //更新終了行の取得
  var columnStart = e.range.columnStart //更新開始列の取得
  var columnEnd = e.range.columnEnd     //更新終了列の取得

  var ssUrl = e.source.getUrl() //スプレッドシートのURL
  var sheet = e.source.getActiveSheet()
  var sheetId = sheet.getSheetId()  //シートID
  var sheetRange = e.range.getA1Notation()  //変更範囲

  var text = '変更箇所の通知\n'
  if (targetStarColumn <= columnStart &&  columnEnd <= targetEndColumn
      &&  targetStartRow <= rowStart &&  rowEnd <= targetEndRow) {
    text = text + ssUrl + '#gid=' + sheetId + '&range=' + sheetRange
  } else  {
    text = '対象範囲外の更新'
  }
  console.log(text)
}

対象範囲が更新された場合に "更新されたシートとセル範囲を指定したURL" を作成します。シートを更新して実行結果をログで確認してください。


メールを送信する

シンプルトリガーのonEdit()ではメール送信ができないので、function名を変更して、トリガーを設定します。

トリガーの設定方法については、

を参考にしてください。

メール送信は GmailAppクラスのsendEmailメソッドを使います。

GmailApp.sendEmail(宛先, 件名, 本文, {オプション})

オプションは省略可能です。(詳細はClass GmailAppを参照してください)

mailTo で指定しているメールアドレスは、自分のメアドに変更してください。

function updateNotice(e) {
  var ssUrl = e.source.getUrl()	//スプレッドシートのURL
  var sheet = e.source.getActiveSheet()
  var sheetId = sheet.getSheetId()	//シートID
  var sheetRange = e.range.getA1Notation()	//変更範囲
  var url = ssUrl + '#gid=' + sheetId + '&range=' + sheetRange

  // メール送信
  var mailTo   = 'sample@gmail.com'
  var subject  = '更新通知'
  var bodyText = '変更箇所の通知\n'
  bodyText     = bodyText + url
	
  GmailApp.sendEmail(
    mailTo,
    subject,
    bodyText
  )
}

特定のセルが更新されたときにメールを出す場合には下例を参考にしてください。

function updateNotice(e) {
  var targetStarColumn = 3	//対象セル(開始列)
  var targetEndColumn = 3	//対象セル(終了列) 
  var targetStartRow = 2	//対象セル(開始列)
  var targetEndRow = 1000	//対象セル(終了列)

  var rowStart = e.range.rowStart //更新開始行の取得
  var rowEnd = e.range.rowStart   //更新終了行の取得
  var columnStart = e.range.columnStart //更新開始列の取得
  var columnEnd = e.range.columnEnd     //更新終了列の取得

  var ssUrl = e.source.getUrl() //スプレッドシートのURL
  var sheet = e.source.getActiveSheet()
  var sheetId = sheet.getSheetId()  //シートID
  var sheetRange = e.range.getA1Notation()  //変更範囲

  var text = '変更箇所の通知\n'
  if (targetStarColumn <= columnStart &&  columnEnd <= targetEndColumn
      &&  targetStartRow <= rowStart &&  rowEnd <= targetEndRow) {
    text = text + ssUrl + '#gid=' + sheetId + '&range=' + sheetRange
    sendMail(text)
  }
}
function sendMail(text)	{
  // メール送信
  var mailTo   = 'sample@gmail.com'
  var subject  = '更新通知'
  var bodyText = text

  GmailApp.sendEmail(
    mailTo,
    subject,
    bodyText
  )
}

上記例では更新されたセル範囲でURLを作成していますが、range=開始行番号:終了行番号とすると、更新された行をフォーカスしたURLが作成できます。

https://docs.google.com/spreadsheets/d/XXXXX/edit#gid=0&range=3:3

上記も、rowStart と rowEnd を使って簡単に作成できます。


GASの基礎を学べる参考図書

ある程度プログラミンがわかっていれば、WEBやYoutubeでも十分に調べられると思いますが、初歩的なところからであれば参考図書は有効な学習手段です。

詳解! Google Apps Script完全入門 [第3版]」は、プラグラミング初心者にわかりやすく説明されています。GASを最初に学ぶ一冊として良書です。

Udemy オススメ講座

【新IDE対応】Google Apps Script(GAS)の基礎を完全習得

【新IDE対応】Google Apps Script(GAS)の基礎を完全習得

講師:事務職たらこ

印象に残りやすい手書き風スライドを用いGASの基本的なプログラミングを気軽に学ぶことができる。本講座でGASを活用した自動化ができるレベルにはなれないが、基礎としては十分。

Post Date:2022年5月5日 

パドルブラシの頭皮マッサージが気持ちいい

【無印良品】パドルブラシ(頭皮ケアブラシ)

ブラッシングによる適度な頭皮への刺激は、頭皮の血行促進効果があります。

薄毛、白髪対策にも頭皮マッサージが効果的とあるので、入浴時には、ケンザンで頭皮マッサージ で紹介した、uka スカルプブラシを使っています。

ケンザン(バリカタ)は、とても気持ちよくシャンプーができます。

下記の動画は、uka(ウカ)スカルプブラシ kenzan(ケンザン)の使い方です。


頭皮マッサージ

頭皮マッサージは、髪に優しいだけではなく、

「3大たるみを引き上げ、白髪・薄毛対策や頭痛・目の疲れ・不眠にも効く」

という謳い文句に惹かれて「10秒で顔が引き上がる 奇跡の頭ほぐし」を購読。

3大たるみ
  • ほうれい線
  • 上まぶた
  • フェイスライン

「奇跡の頭ほぐし」の公式動画で、3大たるみ対策の頭皮マッサージ方法が紹介されています。

効果は別として、とても気持ちいがいいので、湯船に浸かりながら頭皮マッサージに励んでいます。

そして、この本の「ブラシマッサージも白髪・薄毛対策に効果的」の中で、パドルブラシによる頭皮マッサージが紹介されていました。


パドルブラシとは

形状が、カヌーのパドル(オール)に似ていることからパドルブラシと呼ばれているそうですが、一般的なブラシと比べてかなり大きく、ピンの密度が低く(スカスカ)なブラシです。

パドルブラシの特徴
  • クッション性が高い
  • ピンの毛先が丸い
  • ピンの密度が低い
  • ブラシ面が広い

頭皮に優しい刺激

ピンが刺さっているクッション面に空気穴があります。

パドルブラシの空気穴

頭皮に強く押し当てるとこの空気穴から「プシュー」と空気が抜けてブラシが凹みます。

クッション性の高いパドルブラシ

この高いクッション性と先が丸いピンが頭皮に優しい適度な刺激を与えてくれます。そしてブラシ面が広いので頭皮を幅広く捉えてくれるので「気持ちいい!」。

またスカルプマッサージだけではなくブラッシングもでき、髪がふわっと仕上がります。


パドルブラシの選択

「奇跡の頭ほぐし」の中では、下記の3つのパドルブラシが紹介されています。

  1. AVEDA(アヴェダ)
  2. maPEPE(マペペ)
  3. ACCA KAPPA(アッカカッパ)

AVEDAのパドルブラシもAmazon, 楽天でも購入できますが、並行輸入品、海外品との記載がありますので、日本の正規品をということであれば、AVEDA ショップ サイト にある店舗か、アヴェダ 公式 オンラインショップ で購入してください。

また、Amazonで探しているときに、ピンが竹のパドルブラシがありました。ナイロンよりも刺激がありそうですし、竹ピンならブラッシングでの静電気もなさそうです。

と、迷っていたら、MUJIにパドルブラシがあり、値段もかわいいので、こちらを購入。


パドルブラシの使い方

奇跡の頭ほぐし」でパドルブラシの使い方も紹介されています。

  1. 耳上をジグザグにとかす
  2. 生え際から後ろへとかす
  3. ブラシを頭頂部に押し当て「の」の字を描く
  4. 上から下へリンパを流して整える

とありますが、詳細は、書籍で確認してください。

またAVEDA公式チャネルの「【HOW-TO】「パドル ブラシ」で簡単5 STEP ブラッシング」も参考になります。


頭皮マッサージは気持ちいい

洗髪ではuka ケンザンを、そして、頭皮環境改善計画(育毛剤と低温ドライヤー) で紹介している低温ドライヤーで髪の毛を乾かし、とろみ育毛剤を塗布して、パドルブラシで頭皮マッサージをしています。

いずれも

「とっても、気持ちがいい!」

そして、

「ガンバレ、自分の頭髪!!」

Post Date:2022年4月23日 

アップライト・ベースの運指トレーニング

Ibanez Upright Bass UB804

ウォーキング・ベースを弾きたいと、Ibanez の エレクトリック・アップライト・ベース UB804 を購入しました。

ウォーキングベースを始めるときに、買うべき2冊の教則本」で紹介した教則本で、

  1. 音楽基礎理論を学ぶ
  2. 読譜について学ぶ

までは、順調に進んでいましたが、アップライト・ベース(EUB)の弾き方に悪戦苦闘です。

アップライト・ベースの弾き方を学ぶ」で、アップライト・ベースでの 左手のフォーム と 右手の弾き方 について記載しましたが、左手のフォームと運指は、まだまだ練習が必要です。

Ray Brown's Bass Method のE〜E♭のスケール練習で、ローポジションでの運指練習をしていましたが、ハイポジションでの運指がわかりません。

この本で、ハイポジション(サムポジション)の記載があるのは、3弦(A弦)でのCメジャースケールなど数例しかありません。

C major scale
A弦(3弦)でのCメジャースケール

12フレット(A)の指番号Tが親指(Thumb)です。

そもそも4(小指)から始まるのも理解できませんが、ハーフポジションは不動のポジションなのでしょうか?

その程度の理解度ですが、学習意欲だけはあるので、ハイポジションが練習できる教材(練習方法)はないかと、Youtubeで検索。

ん? これは Ray Brown's Bass Method にある E〜E♭ までのメジャースケールと同じ?」

♩=120 と早いテンポで弾いていますが、間違いありません。しかも、ハイポジションでのスケール練習もあります。


アップライトの運指練習用の教則本

納 浩一presents バイブル・フォー・ジャズ・ベース

ということで、「納 浩一presents バイブル・フォー・ジャズ・ベース」をポチり。

第1章の「楽器の基礎練習」は、

  1. 初級編(ローポジション)
    • E〜E♭のメジャースケール(1オクターブ上下)
  2. 上級編(ハイ・ポジション
    • C〜Gのメジャースケール(2オクターブ上下)
  3. 応用編(3-7度跳び)
  4. リズムトレーニング(メトロノームを使った練習)

という構成で、上級編でサムポジションを使ったハイポジションのスケール練習があります。

サムポジションについて学べる「バイブル・フォー・ジャズ・ベース」は貴重な教則本です。しかも Ray Brown も勧めるスケール練習です。

第2章は「ウォーキングベース」についてですが、未読です、、、。


ローポジションでの運指練習

ウォーキングベースを学ぶなら譜面が読めるようになろう(♯と♭との戦い)」で疑問を呈したF♯とG♭問題ですが、「バイブル・フォー・ジャズ・ベース」では、G♭メジャースケールでの記載となっています。

ベースの指板上では同じですが、後述する「何の音を出しているかを声にする」ときに、

  • F♯→G♯→A♯→B→C♯→D♯→F→F♯
  • G♭→A♭→B♭→B→D♭→E♭→F→G♭

と唱えるかの違いがあります。


ローポジションの練習

先ずは、メトロノームを使わずに、Eメジャースケールから順番に、左手のポジションを確認しながら、1音づつ、しっかりと音を出し、弾いている音を声に出します。

下記の5つに注意して左手のフォームに意識を向けます。

  1. ネックを握る手の形はC字型
  2. 人差し指から半音先中指
  3. 中指から半音先小指
  4. 薬指は中指に添える
  5. 親指は中指の反対側でネックを支える

各指には番号が振られています。

指番号
指番号

ローポジションでは3フレットを、人差し指(1)、中指(2)、小指(4)で押弦しますが、

  • 2の指(中指)を使うときは、1の指(人差し指)と2の指(中指)で押弦
  • 4の指(小指)を使うときは、1の指、2の指、3の指、4の指で押弦

に注意してください。

慣れてきたら、「最高に可愛い機械式メトロノームでリズム感を鍛える - メトロノームでリズム練習」で紹介した方法で、メトロノームを♩=40に設定して、メトロノームの音をドラムのスネアが鳴る、2拍、4拍と捉えて練習します。このときの実テンポは♩=80 となります。

初めから早いテンポで練習すると、左手のフォームが崩れて、指がバタつきます。フォームとポジションを意識して、何の音を出しているかを声にして練習しましょう


ポジションチェンジ

アップライト・ベースの弾き方を学ぶ - ポジションチェンジ」で、人差し指からのポジションチェンジについて触れましたが、D♭メジャースケールでは 1,4,2,4 という、小指から中指に移動する新たなパターンが出現します。

D♭ major scale
D♭メジャースケール

D弦(2弦)で、1の指(人差し指)で、E♭(1フレット)の後に、F(3フレット)は、4の指(小指)ではなく、スライドして2の指(中指)で押弦、そして、G♭(4フレット)を4の指で押さえます。

次が、G弦(1弦)での 1,4,2,4 の運指となります。

A♭(1フレット)、B♭(3フレット)を1の指(人差し指)と4の指(小指)で押弦した後に、スライドしてC(5フレット)を2の指(中指)、 D♭(6フレット)を4の指(小指)で押さえます。

戻るときも同じで、4,2,4,1 です。

この 1,4,2,4 の運指は、Dメジャースケール、E♭メジャースケールでも出現します。


マイナースケールでも練習しよう

「バイブル・フォー・ジャズ・ベース」では、メジャースケールでの運指練習しかありませんが、メジャースケールができるようになったら、次にマイナースケールでも練習しましょう。

メジャースケールとマイナースケール」からの再掲となりますが、マイナースケールは、3度,6度,7度 が半音下がった ♪ドレミ♭ファソラ♭シ♭ド♪ という音の並び順です。

記号英語日本語
RRoot完全1度
M2Major 2nd長2度
♭3Minor 3rd短3度
P4Perfect 4th完全4度
P5Perfect 5th完全5度
♭6Minor 6th短6度
♭7Minor 7th短7度
OctOctarve完全8度

D♭のマイナースケールは、C♯mです。運指はこんな形になるのでしょうか。

C♯ major scale
C♯マイナー・スケール

ハイポジションでの運指練習

下記の動画が「バイブル・フォー・ジャズ・ベース」のCメジャースケールからGメジャースケールでのハイポジションのスケール練習です。

初心者を突き放すような動画ですが、ゆっくりと練習していきましょう。

スケール練習の前にサムポジションでの運指について学びましょう。下記の動画で3パターンの T,1,2,3 という指の使い方が学べます。

G弦(1弦)の3パターンを譜面にしてみました。

1)ハーフポジション

ローポジションなら1フレット、2フレット、3フレットですが、ハイポジションでは開放弦が12フレット(G)で、13フレット(A♭)、14フレット(A)、15フレット(B♭)です。

Thumb: Harf Position
Half Position
2)1st ポジション

ローポジションの2フレット、3フレット、4フレットです。ハイポジションでは開放弦が12フレット(G)で、14フレット(A)、15フレット(B♭)、16フレット(B)です。

Thumb: 1st Position
1st Position
2)2nd ポジション

2nd ポジションは、15フレット、16フレット、17フレットですが、開放弦と同じ12フレット(G)の次に、14フレット(A)、16フレット(B)、17フレット(C)と弾いています。Cメジャースケールのソ(G)、ラ(A)、シ(B)、ド(C)です。

Thumb: 2nd Position
2nd Position

上記3パターンをD弦(2弦)、A弦(3弦)、E弦(4弦)でも弾いてみましょう。


サムポジションでの音の出し方

親指の関節で押弦しますが、指が痛い、、、

またサム・ポジションでは、支えとなる親指が指板上にありますので、身体でベースを押さえ込まないと音が鳴りません。これはエレクトリック・アップライト・ベースでも同じです。

サムポジションに慣れてきたら「バイブル・フォー・ジャズ・ベース」のハイポジションでのスケール練習にトライです。

譜面は、CメジャースケールからGメジャースケールまで8パターンありますが、先ずは、C→D♭→D→E♭ までの4パターンで練習します。

いつか、ハイポジションを使うときのために、練習あるのみです。


リズムトレーニング

「バイブル・フォー・ジャズ・ベース」のリズムトレーニングでは、メトロノームが鳴るときを4拍の何れか(1拍目 or 2拍目 or 3拍目 or 4拍目)として捉える方法も載っています。

しかし、これだと実テンポが4倍速となり、メトロノームを♩=40で設定しても、実際のテンポは♩=160となります。

KORG の電子メトロノームMA-2のように♩=30で設定できるものであれば、上記の練習でも♩=120となります。

初心者は、メトロノームの音を2拍/4拍で捉える方法で♩=40(実テンポ♩=80)から始めればよいかと思います。

また、上級編で紹介されている、メトロノームを1拍半(3拍で2回)で捉えるのはかなり高度です。


アップライト・ベースの指南書

エレクトリック・アップライト・ベース(EUB)は、コントラバス(ダブルベース)は買えないけど、という人のニーズに応え、更にIbanez UB804は通常のエレキベースと同じスケール長にして楽器としてのハードルをかなり下げてくれています。

しかし、そもそも初心者がアップライト・ベースを弾きたいと思ったときに、学べる教則本が少なすぎます。

今回紹介した「バイブル・フォー・ジャズ・ベース」もスケール練習としては、最高の一冊かと思いますが、初心者がウォーキングベースを始めるにあたっては難解です。

ウォーキングベースを弾くための音楽理論の基礎については「ウォーキング・ベース超入門」を読み、次に「確実にジャズ・ベースが弾ける練習法」で深め、運指は「バイブル・フォー・ジャズ・ベース」のスケール練習というのが、いまのところの最適解です。

目標は、「1年後に、コード進行を見ながら、自分なりの Walking Bass Line を組み立てられる」でしたが、アップライト・ベースの弾き方に時間を要しています。

まだまだ、先は長い、、、

象と散歩:人気の投稿(過去7日間)