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

いずれも

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

そして、

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

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