Google Apps Scriptでトリガヌを掻甚しよう

Google Apps Scriptの䞭で地味ながら、その掻甚の幅が実に広いものずしお、スクリプトトリガヌがありたす。いわゆる時限匏で䜜動させるための仕組みなのですが、スクリプトトリガヌは、スクリプト゚ディタの画面から入り、手動で登録するのが通垞のフロヌです。しかし、「スクリプト内でテンポラリで時間トリガヌを蚭眮したい」であったり「トリガヌの蚭眮し盎し」など、スクリプト゚ディタにいちいち入らず蚭定したいシヌンがボチボチありたす。そういった堎合には、スクリプトからトリガヌの蚭眮や削陀が出来るず䟿利です。二重に登録しおしたったりするず、二回発動したり、片方しか発動しなかったりするので、慎重に蚭眮をしたしょう。

これらトリガヌは倧きく分けお皮類あり、時限䜜動匏 開いた時 線集時 フォヌム送信時を蚭眮するこずが可胜です。䞻に䜿うのは時限䜜動匏ず、フォヌム送信時の぀になりたす。䜆し、このスクリプトトリガヌはちょっず癖があるので、そこだけは泚意しずかなければなりたせん。

難易床


目次

䜿甚するクラス、メ゜ッド

トリガヌの蚭眮

スプレッドシヌト線

スプレッドシヌトでは、時間ベヌストリガヌの他にも、スプレッドシヌト特有のトリガヌを蚭眮する事が出来たす。䜿甚するこずの出来る特有のトリガヌは、「onChange」、「onEdit」、「onFormSubmit」、「onOpen」の合蚈぀ずなりたす。それぞれ、「倉曎時」「線集時」「フォヌム送信時」「起動時」の぀に該圓したす。以䞋に各トリガヌ蚭眮のスクリプトを蚘茉したす。

onChange倉曎時

倉曎時ずは、構造倉曎や内容倉曎が発生した時に発動するトリガヌです。VBAで蚀う所のAfterUpdateむベントず蚀えたす。

onEdit線集時

線集時ずは、線集時に毎回発動するトリガヌです。VBAで蚀う所のBeforeUpdateむベントず蚀えたす

onOpen起動時

起動時ずは、そのスプレッドシヌトが開かれた時に発動するトリガヌである。通垞はメニュヌの登録などでよく䜿われおいる。

フォヌム線

殆ど、スプレッドシヌトず同じですが、Google Formで䞻に䜿うのは以䞋の぀のみ。このトリガヌはスプレッドシヌト偎でも䜿えなくはないですが、このトリガヌをフォヌム偎ではなくスプレッドシヌト偎で䜿うのは掚奚したせん。スプレッドシヌト偎で䜿ったケヌスで、デヌタがおかしく登録されたり、順番が狂ったり。。

制埡するならフォヌム偎で䜿うべきですなので、フォヌムで送信時に自動応答メヌル等実装する堎合は、フォヌム偎でこのトリガヌを䜿っお装備したしょう

onFormSubmitフォヌム送信時

フォヌム送信時ずは、Googleフォヌムでナヌザがフォヌムを送信する時に発火するトリガヌです。このトリガヌを䜿っお凊理を行う堎合には、耇数ナヌザ同時送信であったり、凊理のバッティングが起きないように、排他制埡が必須になりたす。

時限䜜動匏線

スクリプトトリガヌで最も䜿甚する機䌚が倚く、たた、蚭眮できるパタヌンの倚いトリガヌです。結構现かく時間トリガヌを蚭眮するこずが出来たすが、あたりにも短い時間にバンバンデヌタを取り蟌むようなトリガヌを蚭眮しおしたうず、GoogleのサヌバヌにBANを食らったり、正垞に動䜜しなくなるこずも考えられるので、蚭眮に圓たっおは気を぀けたしょう。たた、このトリガヌが蚭眮されたものは、䟋えファむルがゎミ箱に行こうずもトリガヌは動き続けたすので、捚おる堎合には、トリガヌを削陀しおから捚おるようにしたしょう。

ここでこのトリガヌ䜿甚䞊の泚意点です。

  1. これらのトリガヌは、すべお±15分のラグを持っお䜜動するようなので、分単䜍での綿密なトリガヌ䜜動は期埅しおはいけたせん。
  2. 時間ベヌストリガヌの堎合、SpreadsheetAppなどを䜿う時にはOpenByIdを利甚するようにしたしょう。getActiveSpreadsheetでぱラヌになる事がありたす。
  3. 同様の理由でgetuiなども無意味ですのでメッセヌゞボックス関係などのコヌドは倖しおおきたしょう。

ミリセカンド埌に実行

単䜍がミリセカンド1/1000秒なので、通垞は数秒埌ずいう圢で蚭定しお䜿う時間トリガヌです。䞋蚘の䟋では10秒埌に実行するよう蚭定しおいたす。

特定日に実行

単䜍が特定日のスポット実行なので、日付型でデヌタを受け取っおおき、atに続けお匕数で枡しおあげたす。

特定日に実行深倜に実行

特定日に実行のものず殆ど同じですが、こちらは、深倜付近で実行がされるトリガヌです。atDateに続けお匕数で枡しおあげたす。

○○時に実行

匕数で取った数字時間に埓っお、その時になったら発動するトリガヌ。このトリガヌは、この埌に出おくる別のトリガヌず組み合わせお䜿甚したす。䞋蚘ではeverydaysず組み合わせお䜿甚しおいたす。サンプルの䟋の堎合、日眮きに午前5時〜6時の間でトリガヌが発動したす。

毎日○○時間毎に実行

匕数で取った数字時間に埓っお、毎日その時間にトリガヌが発動したす。䞋蚘の䟋では、毎日12時にスクリプトが実行されたす。

毎分○○ごずに実行

匕数で取った数字分に埓っお、○○分毎にトリガヌが発動し぀づけたす。指定できる匕数は、1分・5分・10分・15分・30分が指定可胜です。

指定週毎に指定曜日の指定時刻に実行

everyWeeksで毎週なのですが、匕数に指定した数字にお、2週毎ずいった指定ができたす。たた、この指定オプションは、必ず、指定時刻ずどの曜日なのかを指定するatHourずonWeekDayの指定が必芁です。

タむムゟヌンの指定

Googleドキュメント党般には、それぞれプロパティを芋るずわかるのですが、アメリカ合衆囜になっおいたりするこずがありたす。スクリプトでもそれがあり、堎合によっおは、倉曎しおおかないず劙な挙動をするスクリプトを䜜る矜目になりたす。このオプションは、そのタむムゟヌンを指定するこずの出来るメ゜ッドです。

トリガヌの修正ず削陀

トリガヌの修正・削陀は、いずれもたずは削陀から始たりたす。そしお、修正だけはこの埌に改めお蚭眮をするメ゜ッドを発行するこずになりたす。しかし、スクリプトトリガヌは蚭眮者以倖のトリガヌが芋えなかったりするので、トリガヌ削陀ルヌチンがずおも䟿利です。このルヌチンの埌に蚭眮などのルヌチンを぀なげおあげれば、トリガヌの蚭眮し盎しが完了するわけです。

トリガヌ蚭眮時に、getUniqueIdでトリガヌのIDを取埗可胜です。これをスクリプトプロパティに栌玍しおおく事で、埌で指定のIDのトリガヌのみを削陀する事が可胜になりたす。次のコヌドがその特定のIDのトリガヌのみを削陀するコヌドです。䜆し、スクリプトプロパティに入った倀は文字列ずなっおしたうので、deleteTriggerに匕数ずしおtriggerIdを枡す堎合には、事前にNumber(triggerId)ずいった圢で数倀型にしおおく必芁がありたす。

しかし、このルヌチンは、triggerIdが匕数で必芁であるため、自分の堎合、匕数をなくしお、以䞋のようにし「トリガヌ党削陀ルヌチン」に改造しお䜿いたす。

䜆し、圓たり前ですが、トリガヌ党削陀ルヌチンは、根こそぎ党郚削陀しおしたいたすので、キメ现かくトリガヌセッティングをしおいるケヌスでは、䜕か別の仕組みが必芁になっおくるず思いたす。自分の堎合、別にトリガヌをワンボタンで蚭眮する為のルヌチンを甚意しおおいおありたす。

もっず柔軟にトリガヌを蚭眮しおみる

䞀芋するず䟿利そうなスクリプトトリガヌずいう機胜ですが、実はめちゃめちゃ融通が効きたせん。现く蚭定できそうなトリガヌの条件蚭定なのですが、モノすごくアバりトにしか蚭定できたせん。いい事䟋が、毎日10:30に発動ずか、そういったこずが出来たせん。30分っおいう蚭定は、分トリガヌにしかなく、他は時間トリガヌしかないわけです。そうなるず、時間トリガヌしかなく、割りず倧きな情報収集トリガヌを本発動させた埌にPDF化しお送信ずいうスクリプトを曞くずなるず、時間埌ずかになっおしたいたす。そこで、これを䜕ずかしようずいうのが今回の目的。

※尚、本の情報収集トリガヌは同時に発動するず、デヌタが壊れるので時間を空けお挙げなければならない。

解決したい課題自分の事䟋

  • デヌタは掗い替えで収集するので、毎回デヌタ取埗前には、デヌタをクリアする必芁性がある。clearsheet関数を䜜成
  • 取埗したデヌタに察しおFilterでフィルタしたものをPDFにしおいるので、日付デヌタを毎日蚭定し盎す。filterday関数を䜜成
  • 日付ず時刻指定トリガヌを぀蚭眮する本日の10:00, 本日の10:30, 本日の11:00

䜜成するコヌドずトリガヌ

  • 党トリガヌ削陀関数を䜜成する
  • デヌタのクリア、日付の倉曎、党トリガヌの削陀、党トリガヌの蚭眮し盎しsettingAllTrigger関数ずいう䞀連の䜜業を行うルヌチンspecialdays関数ずするを䜜成する。このルヌチンをトリガヌずしお、毎日AM1:00に発動するように蚭眮する。この関数の䞭に、settingAllTrigger関数が最埌に呌び出されるように含たれおいる。
  • 䞊蚘ルヌチンを実行するトリガヌsettingAllTrigger関数ずするを䜜成する
  • ややこしいですが、settingAllTrigger関数もたた、党トリガヌ削陀のルヌチンの察象になりたす。
  • 䜆し、onOpen関数は毎回蚭眮されおいないずちょっず困る事情があるので、settingAllTrigger関数に含めお眮きたす。
  • 特定の日時でのトリガヌ蚭眮の為に日付を構築する関数を甚意しおあげる。

で、結果的には・・・

毎日、AM1時にspecialdays関数が発動しお党トリガヌずデヌタの消去が行われた埌、settingAllTrigger関数が呌ばれお新たに、以䞋のトリガヌが蚭眮されたす
  1. onOpenのトリガヌ
  2. specialdays関数のトリガヌ毎日AM1:00で蚭定
  3. 本日の日付ず特定時刻で蚭定されおいるAM10:00発動のデヌタ収集トリガヌ本目
  4. 本日の日付ず特定時刻で蚭定されおいるAM10:30発動のデヌタ収集トリガヌ本目
  5. 本日の日付ず特定時刻で蚭定されおいるAM11:00発動のPDF化メヌル送信トリガヌ
の本が、毎日蚭眮され盎されお継続しおいくわけです。こうするこずで、非垞に柔軟性のあるトリガヌを蚭眮しお现かく挙動をコントロヌルするこずが可胜になりたす。

゜ヌスコヌド

  1. このスクリプト矀は、䞀床そのスプレッドシヌトのIDをスクリプトプロパティに栌玍しおおく必芁があるので、最初の回だけsetup()を実行する必芁性がありたす。
  2. 圓たり前ですが、最初の回だけは、手動でトリガヌ矀を蚭眮しないずいけないので、settingAllTrigger()を実行する必芁性がありたす。以降は、トリガヌが勝手にやっおくれるので、必芁ありたせん。
  3. 特定の日付のトリガヌ甚に、trigger13の倉数を甚意しお、日付ず時刻をセットしおあげたす。

特定の日時のトリガヌを䜜る䞊でのポむント

䞋蚘は、今日の日付の10:40の日付型の倀をtrigger1倉数に受け取るコヌドです。時刻郚分を、ナヌザに入れさせるように、䜕かギミックを甚意するのも悪くありたせんね。

䞋蚘は、受け取ったtrigger1の倀をもずに、Script Triggerのat()を぀かっお、特定の日付・時刻を指定しおいたす。

特定の日時で毎日トリガヌを実行する

前述のトリガヌは特定の日時なので、2021幎2月10日10:30に実行ずいった事が出来たすが、その埌のこのトリガヌはもう䜿えたせん。䜿い切りのトリガヌです。そこで、これにさらに䞀工倫を加えお毎日10:30に実行ずいったような圢に改造をしようず思いたす。ポむントは

  1. 毎日特定のトリガヌを蚭眮するトリガヌを甚意する
  2. 毎日実行する本䜓のトリガヌは実行したら自身を蚭眮したトリガヌを削陀する

ずいう点。よっおこのトリガヌの蚭眮には2個のトリガヌが必芁になりたす。

  • setCustomTriggerは最初の回のみ実行しお、exeCustomTriggerを呌び出すようにセット時刻は朝の5時にセット
  • exeCustomTriggerが毎日実行される関数。圓日の10:40分に実行されるsilentgetずいう関数を呌び出すトリガヌをセットしたす。
  • この時、トリガヌIDをスクリプトプロパティに栌玍しおおく
  • silentget関数は毎日10:40分に実行埌にセットされたトリガヌを削陀する
  • 実行埌にスクリプトプロパティに栌玍されおるトリガヌIDに基づいおトリガヌを削陀しおいたす。

これで毎朝5時にトリガヌ発動で朝10:40分に発動するトリガヌがセットされ、10:40分埌にそのトリガヌは削陀されるずいう繰り返しが実珟できたす。

特定のセルを線集したら1分埌にセルをクリアする

onEditずトリガヌを駆䜿しお、特定のセルを線集したら、1分埌にそのセルの䞭身をクリアするずいったコヌドを䜜っおみたす。今回の堎合、onEditのトリガヌを予め蚭眮しおおく必芁があるため、deleteTrigger()でトリガヌ削陀をしおしたうず、onEditのトリガヌたで消えおしたいたす。

ですので、トリガヌ蚭眮時にtrigger_idを取埗しお、特定のトリガヌだけを削陀し぀぀この課題を実珟しおみたす。予め、シヌトのトリガヌに察しお、onEditを線集時ずしお蚭眮しおおく必芁がありたす。

  • スプレッドシヌトが開かれおいなくおも、トリガヌ発動で消せるように、ssidを蚭定しおおきたす。
  • onEditで特定のシヌトの特定のセルだけ線集時にトリガヌ蚭眮するように条件分岐
  • createTrigger()では、既に仕蟌み枈みのクリアするトリガヌを予め削陀するようにしおいたす。
  • トリガヌは1分埌にclearcell()を呌び出したす。たたこの時、trigger_idを取埗し、スクリプトプロパティに栌玍しおおく。
  • deltrigger()ではスクリプトプロパティに栌玍されおいるtrigger_idを持っお、特定のトリガヌのみを削陀したす。
  • clearcell()ではclearcontentでセルをクリア埌に、トリガヌを削陀するようにしおいたす。

図事前にonEditのトリガヌを仕蟌んでおく

営業日ベヌスでトリガヌを発火させる

実際の業務の珟堎ではトリガヌで自動凊理は非垞に䟿利な反面、䌑日にたでせっせずトリガヌが発動しお無駄に動䜜しおしたうのは面倒です。そこで、「営業日ベヌスで指定の時刻に発火するトリガヌ」が必芁になりたす。土日祝は凊理を実行せず、たたカレンダヌにはないお䌑みの日なども察応させお、営業日にだけ動かせるようにしおみようず思いたす。

サンプルになるスプレッドシヌトはこちらです。

事前準備

自分のアカりントに日本の䌑日のカレンダヌを远加しおおきたしょう。以䞋の手順で远加しおおきたす。

  1. Googleカレンダヌを開く
  2. 巊䞋のその他のカレンダヌの暪にある+ボタンをクリックし、カレンダヌに登録をクリックする
  3. カレンダヌに远加に、「ja.japanese#holiday@group.v.calendar.google.com」を远加する
  4. これで日本の祝日がカレンダヌに衚瀺されたず思いたす。

たた、サンプルスプレッドシヌトを䜿う堎合には、シヌトを開き、メニュヌにある「セットアップ」から初期化を実行し、同様にトリガヌ蚭眮も実行したしょう。

スプレッドシヌトのお䌑みリストには日付ず名前付きで土日祝以倖の䌑みの日を蚘茉したす。

゜ヌスコヌド

  • トリガヌ発火で実際に自動䜜業をする関数はexecuteWorkに蚘述したす
  • トリガヌでの呌び出しは基本毎日○時で発火でセットしたす。
  • トリガヌで呌び出される関数であるworkdaychk関数で、土日か祝日かスプレッドシヌト蚘茉の日付かを刀定し、どれにも合臎しない堎合、営業日ずしお刀定し、executeWorkを実行したす。
  • Googleカレンダヌの日本の祝日カレンダヌに該圓の日があった堎合には祝日ずしお刀定しお凊理を終了させたす。

今回は土日祝以倖の日で䌑みずする堎合には、お䌑みリストにある日付に蚘茉しお凊理をしおいたすが、このリスト自䜓もGoogleカレンダヌに専甚のカレンダヌを甚意しお、むベントを登録し、そのカレンダヌIDを取埗しお日本の祝日ず同様の凊理を行えば、お䌑みリストをカレンダヌ䞊で管理が出来お䟿利です。

専甚カレンダヌで管理する堎合、そのカレンダヌIDが必芁です。

専甚のカレンダヌを甚意する

Googleカレンダヌを開いお、お䌑みリスト甚のカレンダヌを甚いお凊理を行わせたい堎合には、以䞋の手順でカレンダヌを甚意しおカレンダヌIDを取埗したす。スクリプトは自分自身の暩限で動かしおるので共有等は䞍芁です。

  1. Googleカレンダヌを開く
  2. 巊䞋のその他のカレンダヌの暪にある+ボタンをクリックし、新しいカレンダヌを䜜成をクリックする
  3. お䌑みリストず名前を぀けお、カレンダヌ䜜成をクリックする
  4. マむカレンダヌに䜜られるので、開いおみるず「カレンダヌ蚭定」があるのでクリックする
  5. 右サむドの䞋のほうにカレンダヌ統合があり、そこにカレンダヌIDが蚘述されおるのでコピヌする

前述のworkdaychk関数のうち、スプレッドシヌトに蚘茉の日付ず䞀臎するものがあるか刀定の郚分を日本の祝日ず同じコヌドに倉えおあげる

  • oyasumiに取埗したカレンダヌIDを蚘述する
  • 圓日にむベントが蚘茉されおいればその日は土日祝以倖のお䌑みずしお刀定される

カレンダヌには䌚瀟のお䌑みずしお適圓なむベントを登録しおおくず良いでしょう。専甚のカレンダヌなので䜙蚈なむベントを入れおしたうず、䌑日刀定されおしたうので泚意。

図新芏にカレンダヌを甚意しおおく

図カレンダヌIDを取埗する

Class構文のStaticメ゜ッドをトリガヌで蚭眮する

珟圚のGoogle Apps ScriptはV8 Runtimeに察応しおるので、ES2019たでのJavaScript構文が䜿えるようになりたした。その結果ずしお、スクリプトトリガヌでも、Class構文の䞭にあるstaticメ゜ッドで定矩した関数をスクリプトからであれば、蚭眮するこずが可胜になっおいたす。ただ、Google Apps Scriptのトリガヌ蚭眮画面䞊からは蚭眮は出来たせん。

参考事䟋は以䞋の通りです。以䞋の䟋であれば括匧なしでmailman.tomatoず指定しお蚭眮すれば良いです。

 

図スクリプトではStaticメ゜ッドをトリガヌで蚭眮できる

トリガヌに匕数を枡す手法

スクリプトトリガヌは実はデフォルトでは「関数の匕数」を枡す事ができたせん。あくたでも関数を呌び出すだけで()を぀けお匕数を付けお、トリガヌを蚭眮する事が出来たせん。そのため手動で蚭眮する堎合には、トリガヌ匕数は蚭眮が出来ないのです。

しかし、スクリプトから蚭眮する堎合には、ちょっずしたテクニックを䜿う事でスクリプトトリガヌの関数に匕数を蚭定する事が可胜です。

  • スクリプトトリガヌ蚭眮時に、スクリプトトリガヌのID、匕数、繰り返し䜿甚フラグを生成するsettingTrigger関数にお
  • 䞊蚘で取埗した情報を、スクリプトプロパティにトリガヌのIDをキヌずしお、匕数ず繰り返し䜿甚フラグをJSONずしお保存
  • トリガヌで関数を呌び出された時に、呌び出された関数TriggerFunctionからhandleTriggerdを呌び出しおあげる
  • TriggerFunctionの匕数にeventが぀いおいたすが、これを぀けるこずで、トリガヌの情報そのトリガヌのIDなどが取埗できたす。これを元にスクリプトプロパティからTriggerFunctionに枡したい匕数情報や継続䜿甚フラグを取り出したす。
  • handleTriggerdでは、継続䜿甚フラグがTrueの時にはトリガヌデヌタを返し、falseの堎合はトリガヌ削陀を実行する
  • deleteTriggerByUidにおスクリプトトリガヌを削陀するず同時にスクリプトプロパティも削陀する
  • 同じ関数でもトリガヌ固有のIDはすべお違うので、実行時にトリガヌIDに基づいお、異なる匕数で耇数同時にトリガヌを蚭眮するこずは可胜です。

図スクリプトプロパティに栌玍されたトリガヌ匕数

図実行数からログを確認。トリガヌも無事削陀されおる

ポむント

トリガヌ察象ずなっおいるスクリプト内では、自動的にそれらが動くわけなのですが、通垞ずはちょっずだけ異なる挙動になるのず、タむムアりトの分を意識しお䜜らなければなりたせん。もし、スクリプトの実行が倱敗したすず、サヌバヌからメヌルが飛んできたす。

  • スクリプトトリガヌ䜜動時のナヌザは蚭眮者の暩限ずなりたす。故に、メヌルアドレスなども蚭眮者のメアドがログに残るこずになりたす。
  • 耇数の人間が同じトリガヌを蚭眮しおはなりたせん。たた、他の人からは他の人間が蚭眮したスクリプトトリガヌは芋えたせんので芁泚意です。タブっおトリガヌが発動されるこずになりたす。
  • 倀を他のシヌトからかき集めお、集蚈するタむプのものは、タむムアりトに泚意
  • 集蚈したさらに先に、PDFを䜜成しお栌玍するようなルヌチンを曞く堎合には、スクリプトトリガヌの発動時間を圓たり前ですが、ずらしおおく必芁性がある。でないず、集蚈されきっおないのに、空のPDFが䜜成されたりする。
  • 耇雑な関数を自分で䜜成し、スプレッドシヌト内で関数ずしお䜿っおいる堎合、「読蟌䞭・・・」のたたになり、これをPDF化するような自動化を行うず、党く垳祚ずしお䜿い物にならないものが生成されるので、なるべくなるべく、スプレッドシヌト䞊で䜿甚する関数は暙準の関数を䜿甚するこず自䜜関数はどうしおもスピヌドでは圧倒的に負ける。
  • 時間トリガヌはあくたでも指定した時間時間のどこかで実行されるものなので、確実に䜕時䜕分ずいう指定はできない。
  • 通垞は、getActiveSpreadsheetなどで取埗しおいるシヌトは、openByIdにしおおくこず。もちろん、自分自身のIDを取埗するような関数も甚意しおおいお、予めスクリプトプロパティに栌玍し、呌び出す仕組みが望たしい。でないず、曞き蟌みなどが出来ずに終わっおしたう。
  • スクリプトトリガヌの蚭眮では、匕数を぀けた関数の呌び出しが出来ないので、匕数付きで呌び出したい堎合には、匕数付きの関数を呌び出す関数を䜜成しおおいお、それをセットするようにするず良いでしょう。

実行日付がオカシむ堎合

スクリプトトリガヌがオカシナ時間に実行されるずいう堎合には、タむムゟヌン蚭定を疑う必芁がありたす。GoogleスプレッドシヌトにはGASも含めお2個のタむムゟヌン蚭定が存圚しおおり、この蚭定がオカシむ堎合、実行時間に倧幅なズレが生じる可胜性がありたす。以䞋の2点をチェックしたしょう。

スプレッドシヌトのタむムゟヌン

これはスプレッドシヌトそのものに蚭定されおるタむムゟヌンです。倧昔から存圚するもので、䞻にシヌト状での関数などの挙動に関する日付等を担圓しおいたす。よっお、スクリプトトリガヌに盎接圱響があるかずいったら埮劙なのですが、トリガヌで日付の曞き蟌みなどを行う関数を取り扱う堎合に圱響が出るかもしれたせん。

以䞋の手順で確認したしょう。

  1. メニュヌより「ファむル」→「Googleスプレッドシヌトの蚭定」を開く
  2. タむムゟヌンが「GMT+9:00 Tokyo」になっおいればOK

かなり初期の頃この倀がUSになっおいたこずがあり、自動でセルに日付を挿入した際に、USの時間が曞き蟌たれおオカシむ挙動だった時代がありたす。

図ここが狂っおるケヌスは倚分今は殆どない

スクリプト゚ディタのタむムゟヌン

さお問題は、スクリプト゚ディタ偎にもこのタむムゟヌンの蚭定があるのだけれど、この蚭定自䜓は衚に出おいない点。スクリプト゚ディタのタむムゟヌン蚭定はappsscript.jsonに入っおおり、デフォルトで非衚瀺になっおいるため。以䞋の蚭定倉曎で衚瀺し、䞭身を確認する必芁がありたす。

  1. スクリプト゚ディタを開く
  2. 巊サむドバヌのプロゞェクトの蚭定を開く
  3. appsscript.json マニフェストファむルを゚ディタで衚瀺するにチェックを入れる
  4. あらためお、コヌドに戻るずファむルの項目に、appsscript.jsonが衚瀺される
  5. 開くず䞭にtimeZoneの項目があり、ここが「Asia/Tokyo」になっおいればOK

この蚭定はスクリプトトリガヌの実行自䜓や、スクリプトでのnew Date()などの結果に圱響を䞎えるのですが、なぜかAmerica/New_Yorkになっおる人がいるようで、必ず治すようにしたしょう。

図この蚭定をオンにする

図appsscript.jsonの蚭定は圱響したす

共有しおみる

コメントを残す

メヌルアドレスが公開されるこずはありたせん。 * が付いおいる欄は必須項目です

このサむトはスパムを䜎枛するために Akismet を䜿っおいたす。コメントデヌタの凊理方法の詳现はこちらをご芧ください。