投稿一覧

シートがなければ作るというGAS

きっかけ SpreadsheetでGASを使っていて、自分がよくやるのが月毎にシートを分割すること。 例えば、「2022/01」のシートにはその月の売上をGASで登録する。 「2022/02」になったら、自動でその名前のシートを作って、登録する。 便利だが、GASでシートがなければ作るというのが少し面倒だったので、ここにメモしておく。 やりたいこと 特定のシート名のシートが、そのスプレッドシートに存在するかを確認する。 もしなければ、テンプレートとなるシートをコピーして、シート名を設定する。 さらに、そのシートを一番左に移動する。 戻り値として、シートを返す。 function createSheetIfNotExist(ss, sheetName) { const sheet = ss.getSheetByName(sheetName) if (sheet) return sheet const templateSheet = ss.getSheetByName('原本') const newSheet = ss.insertSheet(sheetName, 1, {template: templateSheet}) return newSheet } insertSheet関数は、第2引数で新規シートの挿入位置を指定できる。 さらに、{template: templateSheet}のように、テンプレートのシートを指定するオプションがある。 まとめ しっかりGoogleのドキュメントを読めば、サクッと解決できた。...

Spreadsheetの画像が印刷されない問題解決

問題 Spreadsheetで画像を表示していて、PDFにして印刷しようとすると画像が表示されなくなることがある。 原因はわかっていないが、推測ではGoogleのサーバーでPDFをレンダリングする際に、一定時間以上経過するとロードされなかった画像は無視してPDFを作成しているような気がする。 つまり、画像を含めてSpreadsheetをPDF化して印刷しようとしても、Googleサーバーのご機嫌次第では表示されなくなる。 これは結構困りもので、人によっては表示されたり、画像によっては表示されたりと解決が難しい。 そもそも画像を表示する方法 よく紹介されている画像を表示する方法としては、Googleドライブ上にファイルを上げて、その画像のファイルIDを取得して、以下のようにIMAGE関数で表示している。 IMAGE("https://drive.google.com/uc?export=download&id={画像のファイルID}") この方法では、PDFで印刷時に表示されない問題が発生する。 ちなみに、画像は誰でも見れる共有権限にしておかないと、IMAGE関数で表示できないので注意すること。 解決策 以下の方法で表示できた。 IMAGE("https://drive.google.com/thumbnail?id={画像ファイルID}") おそらくこのURLはGoogleドライブの画像のファイルのサムネイルとして、少し画質が悪いがデータ量が少ないものを表示することになる。 私のケースではこの画質でも十分だったので、問題解決。...

GASの備忘録

はじめに GASを使用するにあたって、結構細かい仕様が気になることがあります。 誰も気にしないような仕様を、備忘録として追記していきます。 備忘録 getLastRowは関数も含む getLastRow で値を含む最後の行を取得できます。 「値を含む」には、関数も含みます。 関数をコピーする GASで行を追加する際、関数が込みで行追加は面倒。 便利な関数が copyTo 。 これを使うと関数だけコピーとか、値だけコピーができる。 GASの種類 コンテナバインド型:Googleドキュメント経由で作成されたGAS スタンドアロン型:単体で作られたGAS https://developers.google.com/apps-script/guides/bound コンテナバインド型は一部特別な関数やイベントを使用することができる。...

GASでLINEBotを作成する方法

はじめに いい家計簿アプリが見つからなかったので、GASを使って家計簿アプリを作成してみました。 この記事では全ての手順は解説せず、注意点だけを備忘録的に記載します。 LINEの設定 LINE Developersアカウントを作成 以下からアカウントを作成する。 https://developers.line.biz/ja/ プロバイダー作成 LINE Developersの画面から、プロバイダーを作成する。 プロバイダーとはサービスを提供する組織や個人のこと。 Webhookの利用を有効化 Webhookの利用が初期状態では無効なので有効化する。 GASのウェブアプリがデプロイ済みであれば、URLも設定して検証を行う。 グループ・複数人チャットへの参加を許可する PUSH_MESSAGEのAPIを利用する場合、そのLINEグループのGroupIDが必要となる。 LINEグループへBotを追加するには、Botが承認を有効にする必要があるので、「グループ・複数人チャットへの参加を許可する」を有効にしておく。 GASの設定 ログの設定 LINE Botを作成するに当たり、GASのdoPost関数を利用します。 しかし、doPostはログを確認できません。 正確に言うと、エディタから実行した場合はログが見れますが、外部から実行された場合そのログは確認できません。 外部から実行された場合でもログを確認するためには、Google Cloud Platform (GCP) と紐付ける必要があります。 裏技的に、スプレッドシートをログ代わりにすることも可能です。...