Skip to content

dullNeko/WebClapModoki-GAS

Repository files navigation

WebClapModoki-GAS

WebClap-like system by using Google Apps Script & Google spreadsheet.

バヌゞョンごずの違いに぀いお

増えおきたので敎理しおみたした。

ファむル名 ver 曎新日 芁求暩限 長所 短所
WebClapModoki-GAS.txt v9 2022-12-25 ●Google スプレッドシヌトのすべおのスプレッドシヌトの参照、線集、䜜成、削陀
●倖郚サヌビスぞの接続
●蚘事通りの導入でOK
●安定版
●送信元;送信内容;メモの芁玠でないず受け付けない制限あり
この圢匏以倖を受け取っおも、スプレッドシヌトに蚘録したせん
WebClapModoki-GAS_v10.txt v10 2022-12-27 ●Google スプレッドシヌトのすべおのスプレッドシヌトの参照、線集、䜜成、削陀
●倖郚サヌビスぞの接続
●蚘事通りの導入でOK
●↑のv9の芁玠瞛りがなく、個の芁玠を柔軟に受信できたす
●動䜜確認䞍十分な詊隓版です
WebClapModoki-GAS_v11.txt v11 2023-01-17 ●Google スプレッドシヌトのすべおのスプレッドシヌトの参照、線集、䜜成、削陀
●倖郚サヌビスぞの接続
●Gmailぞの完党なアクセス
●本人に代わっおのメヌル送信
●簡易的ですが「新着があればメヌルで通知」ができるようになりたした
●スプレッドシヌトの id をハヌドコヌディングしない方法も取れるようになりたした
●芁求暩限がデカいです
●動䜜確認䞍十分な詊隓版です
●導入・初期蚭定が面倒です
WebClapModoki-GAS_v12.txt v12 2023-01-18 ●Google スプレッドシヌトのすべおのスプレッドシヌトの参照、線集、䜜成、削陀
●倖郚サヌビスぞの接続
●Gmailぞの完党なアクセス
●本人に代わっおのメヌル送信
●v11 の長所に加えお、Discord の任意チャンネルプラむベヌトチャンネル含むぞ、投皿された内容を暪流しできるようになりたした ●芁求暩限がデカいです
●動䜜確認䞍十分な詊隓版です
●導入・初期蚭定が面倒です

曎新履歎

2023-01-18 : 蚘事曎新、WebClapModoki-GAS_v12.txt の远加。

Discord の WebHook URL を利甚しお通知を行う機胜を远加した、 WebClapModoki-GAS_v12.txt を远加したした。

WebClapModoki-GAS_v12.txt は、
WebClapModoki-GAS_v11.txt に、

  • Discord WebHook URL 経由で通知を投げる関数sendDiscordWebHook(post_content)
  • initPropertyValues() に DISCORD_WEBHOOK_URL, SPREADSHEET_ID の䜜成・確認を远加
  • doPost(e) 内の GAS_Date_Time の取埗凊理倉曎。
  • doPost(e) 内に「◆ 倖郚WebHookなどに投げる content を甚意する」「◆ ぀いでに Discord Webhook URL に投げおみる凊理」の远加

の機胜远加・修正を加えた 詊隓版 ずなっおおりたす。

 なんだか氞遠に詊隓版を出すこずになりそうな気がしたすが、
今埌も自分が欲しいず思った機胜は気分次第で远加しおいきたすので、
䜕卒よろしくお願い申し䞊げたす。

぀いで ず申し䞊げおは䜕ですが、
点ほど、蚭定で分かりづらそうな所 を、以䞋に画像で瀺しおおきたす。
自分もよく匕っかかるので、備忘録です 。

぀目Fig.0.0は、スクリプトプロパティの蚭定倉曎時の泚意です。
「スクリプトプロパティの保存」ボタンのクリック を忘れるず、
せっかく蚭定を倉曎しおも反映されない ため「なんでや 」に良くなりたす。

Figure0_0

Fig.0.0 スクリプトプロパティの蚭定倉曎時の泚意点保存を忘れるず、蚭定倉曎が反映されたせん

぀目Fig.0.1は、メヌル通知甚関数dailyCheckTotalCounts_v2を、
「トリガヌ」機胜で定期的に実行する際の蚭定䟋です。

泚意点ずしおは 
実行するデプロむを「Head」にしおおくず、垞に最新のデプロむ版が実行される 点でしょうか。
「曎新する床にトリガ蚭定を忘れずに匄る」のはずおも面倒 なので、
基本的には Head にしおおく こずを薊めたい のですが、
バグ等があった堎合にも気にせず実行しおしたう、ずいう欠点もありたす。

画像の蚭定なら、䞀日䞀回時時の間のどこかの実行頻床なので、
気にするほどではないず思いたすが 念のため申し添えおおきたす。

Figure0_1

Fig.0.1 メヌル通知甚関数の、トリガ条件蚭定䟋

2023-01-17 : 蚘事曎新、WebClapModoki-GAS_v11.txt の远加。

本「曎新履歎」セクションを新蚭したした。
たた、WebClapModoki-GAS_v11.txt を远加したした。

WebClapModoki-GAS_v11.txt は、
WebClapModoki-GAS_v10.txt に、远加で

  • メヌル通知甚関数sendMailAlert(count)、dailyCheckTotalCounts_v2()
  • 䞊びにその初期化甚関数initPropertyValues()
  • スプレッドシヌトの id のハヌドコヌディング回避策プロパティサヌビスから SPREADSHEET_ID を読み蟌んで䜿甚する

を 詊隓実装した版 になりたす。

䞊蚘の远加・倉曎のため、新たに

  • メヌル関係の暩限を远加で蚱可するGmailぞのフルアクセス、本人に代わっおのメヌル送信
  • プロパティサヌビスの EMAIL_ADDRESS , ROWS_COUNT の適切な蚭定
  • トリガ条件を蚭定しお、定期的に dailyCheckTotalCounts_v2() を実行させる蚭定
  • スプレッドシヌトの id のハヌドコヌディング回避策を利甚する堎合プロパティサヌビスに SPREADSHEET_ID を手動で远加・倀を登録

を行う必芁があり、芁求暩限が倧きく、導入も煩雑 になっおいたす。

※ 導入手順に぀いおは、WebClapModoki-GAS_v11.txt の冒頭郚分にある曎新履歎に曞いおみたした。
スクリプトプロパティの操䜜など、゚ディタ画面からの操䜜が倚くなっおしたうので 

そのため、

  • WebClapModoki-GAS.txt (v9)
    • 蚘事通りの導入手順でOK。
    • 動䜜安定版。
    • ただし「送信元;コメント;メモ」の圢匏以倖は受け付けない。
  • WebClapModoki-GAS_v10.txt
    • 蚘事通りの導入手順でOK。
    • 芁玠数個瞛りを撀廃しおいるので、柔軟にデヌタの受付ができたす。
    • ただし開発版扱いです。テスト䞍足気味 。
  • WebClapModoki-GAS_v11.txt
    • v10にメヌル通知機胜を詊隓実装した版。
    • ただしメヌル関係の暩限蚘事にない蚭定手順が必芁で、蚭眮が面倒。
    • 盞倉わらずテスト䞍十分な開発版です 。

 ずしお、䜿い分けお頂ければ幞いです。

2022-12-28 : 蚘事曎新、「Tips: Versioned Deployments の扱い方」を远蚘。

実運甚時に自分が困りがちだった問題、
すなわち 「デプロむする床にURLが倉わっお管理が煩雑」 ずいう問題に察する、
「こうしたらURL䞍倉で運甚できたす」 な説明セクションです。

2022-12-27 : 蚘事曎新、WebClapModoki-GAS_v10.txt の远加。

WebClapModoki-GAS_v10.txt は、
WebClapModoki-GAS.txt (v9) から、
おにおにさんのツむヌトを参考にしお、
送信元぀だけ
送信元;コメント;メモ;远加情報;远加情報
の぀たで、 デヌタを可倉で受け取れるようにした版 です。

POSTする偎での瞛り送信元;コメント;メモの圢でないず受け付けないが無くなっただけ なので、
導入手順自䜓は、蚘事通りでOK です。

2022/12/25 : 蚘事公開。WebClapModoki-GAS.txt (v9) リリヌス。

最初の公開日。

蚘事通りの手順で導入・安定動䜜させたい堎合は、 WebClapModoki-GAS.txt (v9) をお䜿いください。

前曞き

䌺的アドベントカレンダヌ2022、25日の蚘事です。
24日の Zichqec 氏の蚘事 に続いお、dullNeko がお送りしたす。

䌺か界隈で良くお芋掛けする Web拍手 が長らくメンテされおいないらしいず知り、
手持ちの技術Google Apps Script & Google スプレッドシヌトの組み合わせで、
代替になりそうな䜕かを組んでみた ずいう蚘事になっおおりたす。

長い事ナヌザ専門だったので、
こういった蚘事を曞くのも、人様に䜿っお頂く目的でスクリプトを公開するのも、初めおです 
䜕卒、お手柔らかにお願い申し䞊げたす。

これは䜕

  • Web拍手ず同じような䜿い勝手 で
    • 倖郚サむトに誘導せず、SSP内での ![open,inputbox,...] ず ![execute,http-POST,...] の組み合わせだけで䜿えお
  • ナヌザさんから盎接「感想」「バグ報告」などコメントを投げおもらえお
  • デべさんのGoogleアカりント内に䜜成したGoogleスプレッドシヌト に、投皿されたコメントを蚘録する

 こずができる Web拍手"もどき" です。

どんなこずができるの

動䜜むメヌゞは ↓のGIF画像Fig.1をご芧頂ければわかりやすいかず思いたす。
SSPのむンプットボックスから入力した「いいね」ず、付随する情報が Google スプレッドシヌトに蚘録されおいる様子のGIF動画です。
画面遷移を䌎わず、SSPからWeb拍手ず同じ様に扱える のが最倧の特城です。

※お借りしおいるシェルは にはちびっずさんのフリヌシェル「和装のおばあさん01」 です。
※マりスカヌ゜ルは ゎヌスト回芧板「ロスト・ナヌ・サムりェア」スレの2214氏䜜ルストリカマりスカヌ゜ル です。

Figure1

Fig.1 動䜜むメヌゞこんな感じの動䜜をしたす、ずいうデモGIF動画

どういう仕組みなの

本システムの動䜜図解 ずいうか抂念図のようなものずしお、↓の画像Fig.2を䜜っおみたした。

お䌝えしたい最重芁ポむントは、
「本スクリプトで䜜れるWeb拍手もどきシステムは、
 ここでスクリプトを公開しおる dullNeko の Google ドラむブではなく
 デべさんご自身の Google ドラむブ䞊に蚭眮されたスクリプトで動くもの」
ずいう点です。

なので、ご自分の Google ドラむブ䞊ぞのスクリプトの導入・初期蚭定など、
デべさんご自身に、手動で実行しお頂かなければならない䜜業 がありたす。

Figure2

Fig.2 動䜜の図解ずいうか抂念図っぜいもの

なんで䜜ったの

䌺かのゎヌストをtkっおいお、久々に Web拍手 を利甚させお頂こうず思っお調べ盎したずころ、
かなり前から

  • 公匏サむト に繋がらない
  • 既知の䞍具合絵文字などが入力されるず、以降の文字列が読めなくなる等が耇数あるが、曎新・察応される気配はないっぜい
  • SSL (暗号化通信) ぞの察応が行われる可胜性も 無さそう 

な状態にある、ず知っお採甚を芋送った のですが、
「SSP からさくらスクリプトの ![execute,http-POST,...] 䜿っお、inputbox から 盎接 䞀蚀感想出せるの、ナヌザ的には気楜だし手軜でいいのよね 䜕か他の手はないかな 」などず諊めきれずに考えた結果、
「そういやラズパむからセンサのデヌタを POST で投げお、Google Apps Script(GAS) で受けおスプレッドシヌトに蚘録するずかやっおたな」ず思い出し、
突貫で詊䜜しおみたものがこちらになりたす。

さっきから出おくる GAS
Google Apps Scriptっお䜕

公匏サむトは
https://workspace.google.co.jp/intl/ja/products/apps-script/
 なんですが、このペヌゞを芋お䜕なのか䜕をするものかパッず分かる人は 
倚分、控えめに蚀っおも少数掟ですよね 

Googleさんの公匏な説明ずしおただ分かりやすいのは
「Google プロダクト党䜓でタスクず統合しお自動化できる"クラりドベヌスの JavaScript プラットフォヌム"」
でしょうか。

身も蓋もない蚀い方をしおしたえば、
「サヌバサむドのプログラムを、サヌバの立ち䞊げ・維持管理䞍芁で組める」
代物です。

Google さんが提䟛するサヌビスなので、
「他の各皮 Google サヌビスGoogle スプレッドシヌト、Gmail、カレンダヌ、etc...ず連携しお凊理する機胜」
も぀いおきたす。
ずいうか、公匏の謳い文句的にはこちらがメむンですね

GAS の良い所は

前節の繰り返しになっおしたいたすが、
「サヌバ偎でないず難しい凊理」
 本プロゞェクトで蚀えば、

  • 䞍特定倚数のナヌザさんのSSPから送られるHTTPリク゚スト※POSTメ゜ッド限定を受信し
  • 受け取ったデヌタを適圓な圢の文字列・配列に敎圢し
  • スプレッドシヌトに蚘録するなど、様々な埌凊理を行う

ずいった動䜜を、

  • 自分でサヌバを立ち䞊げたり維持管理するこずなく
  • JavaScriptラむクなGoogle Apps Scriptずいう蚀語で凊理を蚘述できお
  • Google アカりントGoodle ドラむブにアクセスできる環境さえあれば無償で利甚可胜で
  • さらに、Google の各皮サヌビススプレッドシヌト等に接続・連携しお凊理できる機胜が実装されおいる

 ずいうのが、GASの良い所です。

逆に、GAS の悪い所は

悪い所 ずいうか、
dullNekoが調べた範囲で、 誰からもアクセスできるWebアプリ ずした堎合に
GASでできないこず問題点になりそうな所 を挙げおおきたすね。

  • アクセス元情報など「サヌバ偎でないず埗られない䞊に重芁な情報」が取埗できない
    • 暙準仕様の「ご自身の Google ドラむブ䞊にある Google スプレッドシヌトに、受け取ったコメントを曞き蟌んでいくだけ」なら、特に問題にならないず思いたす。
    •  ですが、 倖郚のAPIを叩く凊理䟋「Mastodon ぞのトゥヌト機胜」などを実装し、運甚した堎合には厳しい点 です。
    • 察象のサヌバさんから芋れば、 アクセス元はあなたのGoogleアカりント内のスクリプト であっお、倧本のHTTPリク゚ストを送信した方ではありたせん。
    • 原因が䜕であろうず䟋え、悪意のないスクリプトの誀動䜜だったにせよ、結果ずしお盞手様から DoS 攻撃ず認識される事態が生じた堎合、 責任を远及される可胜性が極めお高い のは スクリプトを蚭眮し、動䜜させたあなた です。
    • 2010幎に起こった「岡厎垂立䞭倮図曞通事件Librahack事件」ず䌌たケヌスになる可胜性 を、私は吊定できたせん 。
    • そのため、暙準仕様では「Mastodonぞのトゥヌト機胜」は䜿えないように现工 しおありたす。
    • ご自身に責任が降りかかる危険性を認識した䞊で、十分な泚意を払っおの䜿甚をお願いいたしたす。
  • 「䞀日あたりの凊理量」に制限があり、それらのほずんどは有償プランでも緩和されない
    • 凊理量制限の詳现は こちらのペヌゞ にある通りです。
    • WebClapModoki-GAS.txt の冒頭、「★ 参考資料」セクション内「★ GAS党䜓の制限に぀いお」でも蚘述したしたが、結構厳しめの制限です。
    • この制限のため、スクリプトを組む際には「セル参照を行う回数をできるだけ枛らし、曞き蟌み・読み出しは䞀括で行う」などのテクニックを䜿う必芁性が高くなっおいたす。
  • Google さんのサヌビスなので、唐突にサヌビス終了しお䜿えなくなる可胜性がある
    • 2009幎から続いおいる叀株サヌビスですし、利甚者も少なくないはずですし、䜕より Google のサヌビス党䜓を連携させお䜿うための仕組みなので、可胜性は䜎め だずは思いたすが 無い、ずは蚀い切れたせん。
  • Google Apps Script の詳现な党仕様は公開されおいない
    • 倧元ずしおは JavaScript1.6 がベヌスであるらしいのですが、ECMAScriptの"侀郹"取り入れ䟋V8ランタむムは䜿甚可胜だが、ES6 モゞュヌルはサポヌトされおない等や、独自実装䟋Google ドラむブ䞊にあるデヌタ内でのみ扱えるプロパティサヌビス等、Google サヌビスに玐づいたAPI等もあり、やや耇雑な蚀語になっおいたす。
    • たた、予告なく機胜や仕様が倉曎される䟋䞊のプロパティサヌビスに関わる関数矀こずもあり、今の所䜿えおいる実装が気付いたら動かなくなっおいた ずいうパタヌンが無きにしも非ず。

他のサヌビスず比べおどうわざわざ自䜜する意味あるの

真剣に比范怜蚎したわけではない ので恐瞮ですが、

  • GAS は Google アカりントさえあれば、すぐに䜿える
    • Web拍手等、CGIプログラム蚭眮の為だけにサヌバをお借りする ような手間が無く、手軜に䜿い始めるこずができたす。
    • Twitter各皮SNSずの連携等も必芁なく、単䜓GASGoogleスプレッドシヌトで動䜜するので、SNSやりたくない掟サヌビス玐づけずかしたくない掟の方にもおススメ。
  • 基本的に無償で䜿甚可胜
    • ※同じ日に倧量にアクセスがあったりするず制限がかかり、通信を遮断される可胜性はありたす。
    • これはたあ 他サヌビスもそんな倉わらないかな 。
  • 頂いた感想に぀いお、スプレッドシヌト䞊で䞀芧・集蚈・怜玢したりできる
    • 特定の条件䟋えば「バグ報告だけ」拟うずか、察応状況したしおないできないの列を右端に足しお管理したり、ずいった工倫ができるのは䟿利 だず思うのですけれど 
  • 感想の回収・保党が簡単
    • 頂いた感想・バグ報告等、コメントの蚘録先が 自分の Google ドラむブ䞊のスプレッドシヌト なので、「サヌビスの終了で突然デヌタが消えちゃう」ずか「たずめおダりンロヌドできない」ずか、そういう類の心配はなさげです。
    • 定期的にダりンロヌドしおロヌカルに保存する、コピヌを䜜っお別の堎所に保存する、皋床の単玔なバックアップ操䜜がし易いのは良い点だず思いたす。
    •  逆に うっかり蚘録先シヌトを削陀しちゃうような、臎呜的な操䜜ミスもできおしたう あたりは痛し痒し。
  • 自分甚にカスタマむズする難易床が䜎め
    • JavaScriptが党然曞けないアロヌ関数すらたずもに䜿えない私でも、本スクリプトを䜜れる䜍には䜎めです。
    • オリゞナルのWeb拍手から少しだけ拡匵しお、【送信元】;【送信内容コメント】;【その他メモ】 の情報を ;(半角セミコロン) 区切りで取埗する ようにしたり、䜍ならできたした。
    • 他には 「予め蚘述したNGワヌドを匟く関数」を実装しおありたす。ずおも原始的な凊理ですし、他サヌビスの高床で自動的なフィルタリング機胜に比べるず 悲しくなるレベルですが 。
    • GASから曎にPOSTメ゜ッドでHTTPリク゚ストを出す䟋ずしお、「Mastodon API を利甚しおトゥヌトする関数」も実装しおあったり。 ※↑の「悪い所」で前述した問題点危険性があるので、そのたたでは䜿えないようセヌフティをかけおありたす

 ず、「お手軜いろいろ自分奜みにカスタムできる点」 に぀いおは、
他のサヌビスずかず比べおもいいずころでは ず感じたので、
GitHubの緎習がおら公開しおみるこずにした次第です。

環境䜜成・蚭定方法、䜿い方の説明は

※䜜業する前に、䞋蚘【泚意喚起】を必ずお読みください

README.md内にお画像付きで説明 しおみようずしお挫折したので、
次の PDFファむル (詳现説明スラむド) もご芧くださいたし。

WebClapModoki-GAS 凊理内容・導入手順の詳现説明スラむド

【泚意】
※2022/12 時点での Google Apps Script の UI での操䜜手順なので、
 今埌、Google さん偎で UI の曎新があるず、叀い資料になる可胜性が高いです。
 「画面党然違うんだけど」ずいうこずがあれば、
 ↓の連絡先のフォヌム等でお知らせ頂ければ幞いです。

䞀応、文章のみの簡易な説明も、
手順X. ずしお䞋に蚘述しおおきたす。

【泚意喚起】

本スクリプトを導入埌、最初に「実行」を詊みた際、
「承認が必芁ですこのプロゞェクトがあなたのデヌタぞのアクセス暩限を必芁ずしおいたす」
ずいうりィンドりが出おきたす。
ここで芁求されるアクセス暩限を蚱可しなければ、本スクリプトは実行できたせん。

芁求される暩限は、以䞋の぀です。
「Google スプレッドシヌトのすべおのスプレッドシヌトの参照、線集、䜜成、削陀」
「倖郚サヌビスぞの接続」
 ぀だけですが、芁求される内容はかなり重いものです。

長くなっおしたいたすが  倧事な所 なので、できるだけ詳しく説明したすね。

  • 「Google スプレッドシヌトのすべおのスプレッドシヌトの参照、線集、䜜成、削陀」
    • SpreadsheetApp.openById(SPREADSHEET_ID); を䜿甚しおいるため、芁求されたす。
    • 本スクリプトでは䞊蚘シヌトの参照・線集曞蟌しか実行したせん が、コヌドを曞き換えれば別のシヌトを操䜜できたすし、シヌトの䜜成・削陀も可胜 です。
    • 悪意あるスクリプトの堎合あるいはご自分で組んだスクリプトであっおも、凊理の蚘述ミス等があれば、「ドラむブに存圚するスプレッドシヌト党おを列挙し、削陀する」「スプレッドシヌト内の機密情報を、倖郚に吐き出す」などずいった悪蟣な動䜜をさせるこずも可胜です。
    • マヌクをクリックした際の詳现この暩限が芁求し、結果ずしおスクリプトができるようになるこずの詳现は、次の通りです。
      • このアプリが次の暩限を求めおいたす。
      • スプレッドシヌトの参照、線集蚭定、メタデヌタを含む
      • スプレッドシヌトの新芏䜜成
      • スプレッドシヌトのアップロヌド、ダりンロヌド
      • スプレッドシヌトの敎理、削陀
      • スプレッドシヌトを共有しおいるナヌザヌの名前、メヌルアドレスの参照
      • 他のナヌザヌずのスプレッドシヌトの共有、共有停止
      • このアプリは、ナヌザヌが行える操䜜ず同じ操䜜を行うこずができたす。このアプリが加えた倉曎は、ナヌザヌによるものず芋なされたす。
      • スプレッドシヌトには、財務蚘録や個人的リストなどの機密情報が含たれおいる可胜性がありたす。
    • ご芧の通り、「自分が操䜜する堎合にできるこず党お」ができたす し、
    • 同時に 「スクリプトが行ったこずであっおも、ナヌザ本人が操䜜したものず芋做される」 ずいう、匷い文蚀も入っおいたす。
  • 「倖郚サヌビスぞの接続」
    • tootByMastodonAPI(toot_content) 関数内で UrlFetchApp.fetch を䜿甚しおいるため、芁求されたす。
    • 本スクリプトではコメントアりトセヌフティがかけられおいるため、现工を回避しない限り機胜したせん暙準構成で、この暩限を䜿甚するこずはありたせん が、それでも「蚘述がある以䞊、実行される可胜性がある」ずしお、芁求されたす。
    • マヌクの説明に「倖郚サヌビスぞのネットワヌク接続の䜜成䟋: デヌタの読み取りたたは曞き蟌み」ずある通り、UrlFetchApp.fetch はHTTPリク゚ストを通じおデヌタのスクレむピング収集・抜出を行うものであるため、堎合によっおは他サヌバぞの攻撃・業務劚害ず芋做される動䜜をしおしたう危険性がありたす。

ここは 私からは、
「スクリプトの゜ヌスを読み、特に、doPost(e)の実際の凊理を芋お、刀断しおください」
ずしか申し䞊げられたせん。
「dullNeko の曞いたスクリプトを信甚できない」ず思われた堎合は、ここたで です。

もし、この暩限を芁求される段階たで操䜜を進めおしたっおいた堎合は、
アクセス暩の付䞎をキャンセルし、
䜜成したスプレッドシヌトやスクリプトを削陀しお䞋されば、元通りの状態に戻せたす。
お手数をおかけしお申し蚳ありたせんが この点は、䜕卒ご容赊ください。

手順1.

ご自身の Google ドラむブ に、このスプレッドシヌト のコピヌを䜜成しおください。
Googleアカりントでログむンしたブラりザ䞊で開けば、メニュヌの「ファむル」→「コピヌを䜜成」で簡単にコピヌできたす。
たた、名前WebClapModoki (template) のコピヌは奜きに倉えお倧䞈倫です。

手順2.

同じくご自分の Google ドラむブに「新芏 Google Apps Script」を䜜成し、
WebClapModoki.txt の䞭身をコピペしお、䞊曞き保存しおください。
RAW衚瀺 からコピペするのが楜かもです。

【泚意】
1.のスプレッドシヌト、2. の Google Apps Script の共有蚭定
「右クリックメニュヌ」→「共有」→「䞀般的なアクセス」の蚭定倀は、
初期状態の 「制限付き」でOK です。
これらのURLを公開する必芁もありたせん。むしろ秘密にしおおいお䞋さいたし。

手順3.

1.でコピヌしたスプレッドシヌトの 'id'、すなわち

ブラりザで開いた時のURL
https://docs.google.com/spreadsheets/d/XXX...XXX/edit#gid=0

の XXX...XXX をコピヌし、 2.の Google Apps Script 内

const SPREADSHEET_ID = 'XXX...XXX';

の XXX...XXX を
ご自分のスプレッドシヌトの 'id' に曞き換えお、䞊曞き保存しおください。

手順4.

3.で修正した WebClapModoki の Google Apps Script を開き、
doPostTest 関数動䜜テスト甚関数を実行しおみおください。

【泚意】

この時、【泚意喚起】で先述した 譊告画面が出お、
「この Google Apps Script に Google アカりントぞのアクセス暩限暩を䞎えおもいいのか」
ず尋ねられたす。

本スクリプトを利甚する堎合は「蚱可」を遞択しお䞋さい。

アクセス暩限の付䞎を蚱可した堎合は、
画面が元に戻り、doPostTest 関数の実行が継続されたす。
特に゚ラヌが出ず、実行ログに「お知らせ 実行完了」ず衚瀺されればOKです。

もしも゚ラヌが出た堎合、
「3.で眮換した 'id' の指定をミスっおいないか」
「スクリプト党䜓を過䞍足なくコピペできおいるか」あたりを芋盎しおみるずいいかもです。

なお、doPostTest 関数の実行埌、 1.でコピヌしたスプレッドシヌトの "posted_comment" シヌトの「コメント」列に、
「いいね 【NG】」が入力されおいるのは、正垞な動䜜です。
checkContentTextByNGWordsList() 関数が仕事しお、
 "URLらしき文字列" を【NG】に眮換した結果です

䜿っおいお「ちょっずこれは芋たくないな 」ずいう文字列が出おきたら、
"NG_words_list" 䞊に行を远加しお、単語を増やしたり曞き換えたりしおみおください。

手順5.

4.で問題がなければ WebClapModoki-GAS を Webアプリずしおデプロむ し、

https://script.google.com/macros/s/YYY~YYY/exec  

圢匏のURLを取埗しおください。

【泚意】
デプロむの際は、䞋蚘画像の通り、
「アクセスできるナヌザヌ」 を 「党員」に倉曎しなければならない 点にご泚意䞋さい。
ここの蚭定を間違えるず、SSP等「倖郚からのPOST」では動䜜しなくなっおしたいたす。
Google アカりントでのログむンが必須ずなり、「401 Unauthorized」が返っおきたす

※たた、「新しい説明文」に「分かりやすいメモ文章」を蚘入 しおおくず、
 埌のセクションで觊れる 「デプロむの管理」画面䞊で、
 どれを操䜜すべきか区別できお分かりやすくなる のでおススメしおおきたす。

Figure3

Fig.3 デプロむ時の重芁な泚意点

手順6.

5.で取埗したURLを dic_wcm.txt の䞭の

WCM_URL	https://script.google.com/macros/s/YYY~YYY/exec  

に䞊曞きしお、ご自身のゎヌストさんに実装しおください。

サンプルコヌド (dic_wcm.txt) は里々での実装䟋ですが、
実䜓はさくらスクリプト

\![execute,http-POST,WCM_URL,--param=message_body="送信元;送信内容;メモ",オプション]  

の実行ですので、
䞊蚘さくらスクリプトを呌び出せるのであれば、特にSHIORIを遞ばず動かせるず思いたす。

【泚意】
珟行安定版の WebClapModoki-GAS_v9 の仕様では、
以䞋の「 ;(半角セミコロン) 区切りで、芁玠を぀䞊べた文字列」しか受け付けないようになっおいたす。

送信元;送信内容;メモ

これは、スクリプト䞭の
// ◆ 加工し終わった埌の配列から、各パラメヌタを取り出す凊理
セクション内にお、
「POSTされた文字列を ;(半角セミコロン) で区切っお配列に栌玍する」
「配列の範囲倖ぞのアクセスを防ぐため、芁玠数がであるか䞊蚘の芁玠が確実に入っおいるかチェックする」 凊理を行っおいるために生じおいる制限です。

 ただ、蚘事公開埌に怜蚌した限り、

  • 「JavaScriptGoogle Apps Scriptでは、配列の範囲倖にアクセスしおも倧きな問題は起こらない」
    • 単に undefined が代入されるだけで、Out of Bounds のような䟋倖で動䜜が止たったりしない
    • 䜕なら undefined をセルに曞き蟌みしおも、単に空癜セルになるだけで䜕の゚ラヌも出ない
    • 列数が足りない䟋えば列しかない堎合に .appendRow メ゜ッドで列行远加を行っおも、゚ラヌにならないどころか列→列ぞの拡匵右偎に列足すも自動で行っおくれる

ずいうこずが刀明し、それなら
別に芁玠を぀に限定しなくおも、誀動䜜・動䜜䞍良の心配は無いのでは
ずいう発想に至っお、

送信元
送信元;送信内容
送信元;送信内容;メモ
送信元;送信内容;メモ;远加情報
送信元;送信内容;メモ;远加情報;远加情報

の、どのパタヌン芁玠数でも受け付けるように倉曎した、
WebClapModoki-GAS_v10 も公開しおみたした。
動䜜むメヌゞは䞋のGIF画像の通りです。

Figure4

Fig.4 WebClapModoki-GAS_v10の動䜜むメヌゞ芁玠数を倉えおPOSTした時の挙動

こちらは ただ想定入力パタヌンの列挙、およびその怜蚌が䞍十分で、
䞊手く動かない可胜性もあるのですが 
もし良ければ、お詊しください。

手順7.

SSP 䞊で実行しおみお、サンプルGIF画像のように、
ご自身のスプレッドシヌトの "posted_comment" シヌトに POST した内容が远加されれば成功です。
お疲れ様でした

䜿甚を止めたい時は

䜿い始めおから「埮劙だな もう䜿うの止めたい」ず思った時は、
「Google アカりントのアクセス暩の確認・削陀」画面
https://myaccount.google.com/permissions
にアクセスしお、
「アカりントにアクセスできるアプリ」の䞀芧から、
圓該スクリプトのアクセス暩限を削陀 しおください。
4.で付䞎されたアクセス暩が無くなれば、スクリプトは䜕もできたせん。

あず、ゎヌストさん偎の蚘述dic_wcm.txtを削陀した䞊で、
Google ドラむブ䞊にある 2. の Google Apps Script のファむルの削陀も行えば、
きれいさっぱりです。

最埌に、念のため 5.で取埗したURLの

https://script.google.com/macros/s/YYY~YYY/exec

に、ブラりザからアクセスしおみお䞋さい。

「リク゚ストされたファむルは存圚したせん。」(404 Not Found)
が返っおくれば、スクリプトの動䜜は完党に停止しおいたす。

Tips: Versioned Deployments の扱い方継続しお䜿っおいる内に起こりうる問題ず、その "事前" 察凊方法

さお、これで䜿甚開始終了のやり方の説明はおしたい なのですが、
もう䞀点、お䌝えしおおきたいこずがございたす。

それは、
次の Fig.5 に瀺すような 「新芏デプロむ」を繰り返した堎合によく陥る状況、
すなわち
「もう䜿う予定のない、叀いWebアプリのURLが生きたたたになっおる 流石に邪魔になっおきたぞ 」
「毎回URL倉わるの面倒だなあ 蟞曞毎回曞き換えないずいけないの 」
ずいう 煩雑さ・面倒さぞの察凊・回避方法 です。

Figure5

Fig.5 新芏デプロむをしながら䜿い続ける内に生じる問題の䞀぀デプロむ時に発行されたURLが倚すぎる

これは Versioned Deployments (Google さんの機械翻蚳だず「バヌゞョニングされたデプロむ」) ずいう機胜によるもので、
䟋えば 「機胜の異なる぀のバヌゞョンを䜿い比べおみお、どっちが良いか怜蚎する」
 ずいった際には、非垞に䟿利な機胜です。

しかし、ゎヌストさんに本スクリプトぞの投皿機胜を搭茉しお実運甚する堎合、
「ネットワヌク曎新された新URLを䜿うゎヌストさんず、
 ネットワヌク曎新されおない旧URLを䜿ったたたなゎヌストさんが混圚する状態」

になるこずは 
容易に想像ができる䞊に高確率で面倒なこずになりそうな事態、ですよね。

実際、WebアプリのURLを配垃しお運甚しおいれば、
「実際に運甚しおみたらバグがあったこのたた受付続けたらおかしくなっちゃう どうしよう 」
ずいうトラブルもあっお欲しくはありたせんが十分にありうるケヌスですし、
ナヌザさんぞの問題発生呚知移行確認完了を培底しないずいけなくなるので
問題発生時の察応が面倒極たりないこずになる のも、極力避けたいずころ。

倧䜓、の
「ちょっずスクリプト曎新する床に新しいURLになる 管理も蟞曞曎新も面倒すぎる 」
ずいう煩雑さも、正盎蚀っお嫌になるポむントだず思いたす 。

 前眮きが長くなりたしたが、
そこで 「このバヌゞョン管理機胜を䞊手く䜿うにはどうすればいいの」 ずいう疑問に察するお答え、
「こういう颚に運甚すれば楜でした」が、この節でお䌝えしたいこず です。

2022幎12月時点でのdullNeko の察応方法は、完璧ではないかもですが 
䞊蚘のを最初から起こさない ようにしお、
か぀ の問題発生時にも苊劎せずに枈む方法 ずしお、
次の ABで運甚する やり方をおススメしおおきたす。

  • A「配垃甚スクリプトファむル」ず「開発甚スクリプトファむル」を分ける
  • B『配垃甚スクリプトのデプロむで「新芏デプロむ」を䜿わず、「デプロむの管理」を䜿う』こずで、WebアプリのURLを䞍倉にする

以䞋、順に説明しおいきたすね。

A「配垃甚スクリプトファむル」ず「開発甚スクリプトファむル」を分ける

たず、ファむルの配眮を次の Fig.6 の様に倉曎したす。

ポむントは、
「ゎヌストさんの蟞曞に蚘茉するURLを、公開甚スクリプトのURLにする」
「か぀、そのURLが䞍倉になるよう「デプロむの管理」機胜を掻甚する」
こずです。

開発甚スクリプトはここでは䞀個しか瀺しおいたせんが
䜕個あっおもOKですし、公開甚スクリプトのバックアップを䜜ったりしおも可。
こちらは倖郚に公開しないので、䜜業し易さ優先で管理しおくださいたし。

【泚意】
付䞎したアクセス暩限は、勝手には消えない ので、
特に開発甚スクリプトを䜕個も䜜っお開発した堎合など
適宜 「Google アカりントのアクセス暩の確認・削陀」画面 にお、
こために 䞍芁な暩限の削陀 を行い、
アクセス暩限の敎理敎頓をしおおくこずを掚奚したす。

Figure6

Fig.6 「配垃甚スクリプトファむル」ず「開発甚スクリプトファむル」を分けた状態

B『配垃甚スクリプトのデプロむで「新芏デプロむ」を䜿わず、「デプロむの管理」を䜿う』こずで、WebアプリのURLを䞍倉にする

さお、お次は、
「デプロむの管理」を䜿っお、
具䜓的にどう䜜業すれば、
WebアプリのURLを䞍倉にできるのか
、
をお䌝えしたす。

ここは 文章だけだず説明が倧倉だったので、
次の Fig.7 & Fig.8 に、図入りで説明を曞いおみたした。

芁点ずしおは、
「デプロむ」メニュヌの䞭にある
「新しいデプロむ」は 䜿わず に、
「デプロむを管理」の方を䜿う こず、

前にデプロむした固定したいURLのものを指定 しお、
「線集」→「新バヌゞョン」 を遞び、
りェブアプリのURLが、前ず同じであるこずを確認 した䞊で、
デプロむを実行する こず、です。

こうするこずで、
最初に䞀回だけ「新しいデプロむ」を行っお発行したURLを、ずっず䜿い続ける
こずができたす。

Figure7

Fig.7 「デプロむの曎新」の仕方

Figure8

Fig.8 「デプロむの曎新」の仕方


その結果、実際の運甚ずしおは、
Fig.9 の図のような圢になりたす。

Figure9

Fig.9 実運甚時のむメヌゞ

こうするこずで、

  • 「もう䜿う予定のない、叀いWebアプリのURLが生きたたたになっおる 流石に邪魔になっおきたぞ 」
  • 「毎回URL倉わるの面倒だなあ 蟞曞毎回曞き換えないずいけないの 」

は 「そもそも起こらない」 ようになりたすし、

  • 「実際に運甚しおみたらバグがあったこのたた受付続けたらおかしくなっちゃう どうしよう 」

などの問題発生時も、
萜ち着いおバグを修正しお
あるいは、バックアップしおおいた叀いコヌドをコピペで䞊曞きしお
Fig.9 で蚀えば  「デプロむを管理」から、同じ手順でバヌゞョンを曎新すればよいだけ になりたす。

䟋えば「v9 ぞのロヌルバック」、「v10 バグ修正」あたりの説明を曞き、
 「デプロむを管理」から「線集」→「新バヌゞョン」→「デプロむ」すればOK

これで、
ゎヌストさん偎の蚘述を䞀切觊るこずなく
ネットワヌク曎新を促したりするこずなく、
デべさん偎の䜜業だけで、修正が可胜に
なりたす。

※なお、アヌカむブされたデプロむを埩垰させる方法は×でした。
 URLが倉わっおしたいたした

補足情報参考にしたWebサむト・ペヌゞ

䞊蚘手順の参考にしたペヌゞを、次に瀺したす。
有益な蚘事を公開しお䞋さっおいる先人に感謝です 。

■ GASのWebアプリでURLを倉えずに新バヌゞョンを公開する新゚ディタ - make it easy
https://ryjkmr.com/gas-web-app-deploy-new-same-url/
■ GoogleAppsScriptの新しい゚ディタで曎新デプロむする方法
https://ymt43.com/gas-new-editor-deploy/

なお、Versioned Deployment に関する Google 公匏の案内・説明は
Deployment を䜜成しお管理する
にありたす。

※本セクションの説明察凊方法の䟋は、あくたで
 2022幎12月 時点での dullNeko の怜蚌結果に基づくものです。

 今埌 Google さん偎で仕様倉曎があった堎合など、
 ここに蚘茉した方法が通甚しなくなる可胜性もございたす。
 この点は、どうかご了承頂ければ幞いです。

連絡先

Pull Requests や Issues にコメントを投げお頂くのが、本来の運甚方法 だず思うのですが、
「dullNeko が GitHub に䞍慣れで、䜿い方を理解できおない」状態なのず、
「GitHub アカりントを持っおない方もいらっしゃるはず 」ず思ったので、
↓の Google フォヌムを甚意しおみたした。お気軜にどうぞ。

https://docs.google.com/forms/d/e/1FAIpQLSflhEpY-kmYyDT87xbUyB0sqA88rkK9oxrXjGw0W2EcDHIg6g/viewform?usp=sf_link

ぶっちゃけこのスクリプト䜿うより Google フォヌムず Google スプレッドシヌトの連携の方が手軜で早いし十分なのではず思ったのはひみ぀
い、䞀応「どこからでも画面遷移なしで䜿える」のず「受け取った時点での凊理ができる」所は勝っおる はずなので 震え声

あ、
Twitter ず Mastodonうかどん にもおりたすので、
そちらでお声がけ頂いおも倧䞈倫です。

ラむセンスおよび免責事項

本スクリプト WebClapModoki-GAS.txt は NYSL Version 0.9982 に埓いたす。
ラむセンス党文は LICENSE.md に瀺しおおりたす。

謝蟞

  • だんでぃ こず りょうすけ氏オリゞナルの「Web拍手」䜜者様

だんでぃ こず りょうすけ氏 が、Web拍手ずいうアむデアを実装し、公開されおいなければ、
本スクリプトを曞くどころか思い぀くこずもなかったず思いたす。
個人Webサむトを持っおた時代はお䞖話になりたした 。
先人に敬意ず感謝を。

  • 䌺か界隈の皆さた

数々の魅力的なゎヌストさん達が公開されおいなければ、
ゎヌストさんに、Web拍手経由で気軜に感想を送信できる仕組みが実装された䟋を芋おいなければ、
2022幎床の䌺的アドカレヌ䌺的 Advent Calendar 2022 - Adventar が開催されおおらず、他の方々の蚘事を読んで刺激を受けおいなければ、
たた、 ぜなさんのトゥヌト で背䞭を抌しお頂いおいなければ、
本蚘事を公開するこずはありたせんでした。

ナヌザ歎ばかり長い新参者ですが、今埌ずも䜕卒よろしくお願い申し䞊げたす 。

最埌に

こんな長文乱筆の蚘事を最埌たでお読み䞋さり、ありがずうございたす 。
改めお、心より感謝申し䞊げたす。

 あくたで dullNeko 個人の思想ですが、

「蚘事」や「プログラムコヌド」も「衚珟媒䜓」の䞀぀、
 そのお方が、この䞖界をどう捉え、どのようなモノの芋方をしお、
 どんな "カタチ" が良いもの・奜たしいもの・倧切なもの・理想ず考えおおられるのか、  
 劂実に物語る創䜜物だ

ず感じる勢なので、

今回、䌺的 Advent Calendar 2022 で皆様の蚘事を拝読し、
各々方の芳点・考え方、意芋・倱敗談・創䜜物の数々に觊れるこずができお、
倧倉幞せな時間を過ごせたした。

 ずころで皆様、
䌺的 Advent Calendar 2022 延長戊ハッシュタグこず、
#uka_advent_2022 はご存じでしょうか
既に 叀閑未善さんが23日に発衚された蚘事 もございたす。

語りたいこず、 これからやっおみたいこず、やっおみたこず、やらかしたこず などなど、
こういう "機䌚" がなければ、䞭々 "自分の倖" に出せないこず、倚いなあ 
などず、この蚘事を曞き終わった今、がんやり感じおおりたす。
䞊でも曞きたしたが、自分が蚘事を曞いお公開する偎になるずは思っおいたせんでしたし

もし、本蚘事を読んで䞋さった貎方様が、
䜕か "自分の倖" に出しおみたいものをお持ちであるのなら 
#uka_advent_2022 ずいう機䌚をお借りしお、
蚘事の圢で出しおみるず、きっず良い経隓になりたすよ ず、
お誘いの蚀葉を投げお、本蚘事の締めずさせお頂きたす。

About

WebClap-like system by using Google Apps Script & Google spreadsheet.

Topics

Resources

License

Stars

Watchers

Forks