Skip to content

Latest commit

 

History

History
1210 lines (917 loc) · 167 KB

File metadata and controls

1210 lines (917 loc) · 167 KB

Google Apps Script を活用しよう

ここでは、私のBlogGistsGitHub, Stackoverflow での私の回答で公開している Google Apps Script を利用するための CLI ツール、ライブラリ、レポート、ベンチマーク、サンプルスクリプトなどを紹介します。これらのコンテンツから Google Apps Script の可能性を知るきっかけになれば幸いです。

(注意)オリジナルはこちら(英語)です。このリストのみを日本語に自動翻訳させています。リストにある各リンク先は英語です。


索引



ニュース


Google AppsScript のトレンド

Stackoverflow では、多くの人が毎日質問と質問への回答を投稿しています。Stackoverflow にはさまざまなタグがあります。各タグで多くの議論が行われます。彼らの議論は重要な情報をもたらし、多くの人々にとって非常に役立ちます。タグの 1 つとして、「google-apps-script」があります。私は時々そのタグで質問で話し合います。ディスカッションを見ると、タグの原点である「Google Apps Script」が更新されているため、時間の経過とともにディスカッションが変化し、進行していることがわかります。このレポートでは、この変更を「google-apps-script」のタグのトレンドと考えています。この傾向には、「google-apps-script」のタグに追加される質問、質問者、回答者、タグの数が含まれます。「google-apps-script」のタグのトレンド Google AppsScript の進歩と GoogleAppsScript のさまざまなアプリケーションに深く関係しています。このレポートでは、いくつかのアプローチの 1 つとして、「google-apps-script」のタグが付いたすべての質問を統計的に分析することにより、Google AppsScript の傾向を調査しました。その結果、「google-apps-script」のタグを付けてすべての質問を調査したところ、このメインタグに追加されたタグが「google-apps-script」のタグの傾向に強く影響していることがわかりました。また、「google-apps-script」のタグに追加されたタグを調査することで、将来のトレンドを推定できる可能性が示されました。Google Apps Script の傾向は、「google-apps-script」のタグが付いたすべての質問を統計的に分析することによって調査されました。その結果、「google-apps-script」のタグを付けてすべての質問を調査したところ、このメインタグに追加されたタグが「google-apps-script」のタグの傾向に強く影響していることがわかりました。また、「google-apps-script」のタグに追加されたタグを調査することで、将来のトレンドを推定できる可能性が示されました。Google Apps Script の傾向は、「google-apps-script」のタグが付いたすべての質問を統計的に分析することによって調査されました。その結果、「google-apps-script」のタグを付けてすべての質問を調査したところ、このメインタグに追加されたタグが「google-apps-script」のタグの傾向に強く影響していることがわかりました。また、「google-apps-script」のタグに追加されたタグを調査することで、将来のトレンドを推定できる可能性が示されました。


設定


GAS 用の CLI ツール

  • ggsrun:ローカル PC の独自の端末で Google Apps Script(GAS)を実行します。
  • gislack:ファイルを Gist と Slack の両方に送信します。
  • goris:Google 逆画像検索(goris)で画像を検索します。
  • gogauth:Google で API を使用するためのアクセストークンを簡単に取得できます。
  • gorearrange:端末上のテキストデータをインタラクティブに再配置します。
  • goodls:Google ドライブから共有ファイルをダウンロードします。

Web アプリケーション

  • Google Apps Script ライブラリの検索:これはthe databaseから GoogleApps スクリプトライブラリを検索するためのアプリケーションです。
  • Fields Builder For Google APIs:FieldsBuilderForGoogleAPIs は、GoogleAPI を使用するためのフィールド値を構築するための Web アプリケーションです。これは主に、GoogleAPI を使用するためのスクリプトを開発するために使用されます。GitHub

GAS ライブラリ

GAS ライブラリは、Google Apps Script ライブラリの検索で検索できます。

  • BatchRequest:これは Google Apps Script(GAS)を使用してバッチリクエストを実行するためのライブラリです。
  • ConvertNFDtoNFC:これは、Google Apps Script を使用して文字列を NFD(正規化フォーム分解)から NFC(正規化フォーム合成)に変換するためのスクリプトです。
  • FilesApp:FilesApp は、Google Apps Script(GAS)を使用して Google ドライブのファイルとフォルダのリストを取得するための GAS ライブラリです。また、これにより、Google ドライブ内のすべてのファイルとフォルダからツリーを作成できます。
  • ImgApp:これは Google AppsScript 用の画像ツールのライブラリです。
  • ManifestsApp:これは Google AppsScripts のマニフェストライブラリです。
  • ProjectApp:これは Google Apps Script(GAS)用のプロジェクトライブラリです。
  • ProjectApp2:これは Google Apps Script(GAS)用の GAS プロジェクトライブラリです。このライブラリは、スタンドアロンスクリプトタイプとコンテナバインドスクリプトタイプの両方のプロジェクトに使用できます。
  • OnedriveApp:これは MicrosoftOneDrive を使用するための GoogleAppsScript のライブラリです。
  • Resumable_Upload_For_WebApps:これは、Google Apps Script(GAS)を使用して Web Apps で大きなサイズ(> 50 MB)のファイルをアップロードするためのサンプルスクリプトです。再開可能なアップロード方法は、ファイルのアップロードに使用されます。このスクリプトは、javascript の gapi を使用してスクリプトに適用することもできます。
  • RunAll:これは、ネイティブの Google Apps Script(GAS)のみを使用して並行処理を実行するためのライブラリです。
  • SOUWA_GAS:配列内の文字列要素を高速で合計するための GAS ライブラリ
  • ZipFolder:これは Google AppsScripts を使用してフォルダーを圧縮するためのライブラリです。
  • RangeListApp:RangeListApp は、Google Apps Script(GAS)を使用してスプレッドシートの値を a1Notation の範囲リストで取得、配置、置換するための GAS ライブラリです。
  • DownloadLargeFilesByUrl:DownloadLargeFilesByUrl は、Google Apps Script(GAS)を使用して URL から Google ドライブに大きなファイルをダウンロードするための GAS ライブラリです。
  • ArrangeStackingOrder:ArrangeStackingOrder は、Google Apps Script(GAS)を使用して Google スライド上のページ要素のスタック順序を調整するための GAS ライブラリです。
  • ProcessApp:これは Google AppsScript のプロセスと情報を取得するためのライブラリです。たとえば、メソッドの 1 つは、所有者のアカウントで時間駆動型トリガーによって実行されたすべての関数の合計実行時間を取得します。
  • GistChecker:これは、Google Apps Script を使用して、自分の Gists のコメント、スター、フォークの数の変更をメールで通知するための GAS ライブラリです。
  • FetchApp:これは、Google AppsScript を使用して multipart / form-data のタイプを作成および要求するための GAS ライブラリです。このライブラリは、Google AppsScript のクラス UelFetchApp を拡張します。
  • GetEditType:GetEditType は、Google Apps Script(GAS)を使用してスプレッドシートの OnEdit イベントトリガーの編集タイプを取得するための GAS ライブラリです。
  • UnzipGs:これは、Google AppsScript を使用してパスワードで保護された Zip ファイルを解凍するための GAS ライブラリです。
  • GmailToList:これは、Google Apps Script(GAS)を使用して Gmail のすべてのメッセージをリストとしてエクスポートするためのライブラリです。
  • EncodeApp:EncodeApp は、エンコードセット(charset)を取得し、Google Apps Script(GAS)を使用して特定のエンコードセットで URL エンコードを行うための GAS ライブラリです。
  • DateFinder:DateFinder は、スプレッドシートのシートのセル範囲から日付オブジェクトを検索し、GoogleApps を使用して検索範囲を RangeList オブジェクトとして取得するための GAS ライブラリです。スクリプト(GAS)。
  • RichTextApp:これは、テキストスタイルのリッチテキストを GoogleDocument から GoogleSpreadsheet に、または GoogleSpreadsheet から GoogleApps Script を使用して GoogleDocument にコピーするための GAS ライブラリです(ガス)。また、セル内のリッチテキストを HTML 形式に変換することもできます。
  • GPhotoApp:これは、Google Apps Script(GAS)を使用して Google PhotoAPI を使用してアルバムとメディアアイテムを取得および作成するための GAS ライブラリです。
  • CopyFolder:これは Google ドライブ上のフォルダをコピーするための Google AppsScript ライブラリです。
  • OwnershipTransfer:これは、ドライブ API を使用してファイルやサブフォルダーを含む特定のフォルダーの所有権の譲渡を実現するための Google AppsScript ライブラリです。
  • GASProjectApp:これは、ドライブ API を使用してスタンドアロンタイプの Google Apps Script プロジェクトを作成、更新、エクスポートするための Google AppsScript ライブラリです。この場合、Apps ScriptAPI は使用されません。
  • DocsServiceApp:これは、ドキュメントサービス、ドキュメント API、スプレッドシートサービス、スプレッドシート API、スライドサービス、スライド API をサポートするための Google AppsScript ライブラリです。このライブラリの目的は、サービスが達成できないプロセスを補うことです。
  • HtmlFormApp : これは、HTML フォームからフォームオブジェクトを解析し、送信された値をスプレッドシートに追加するための Google AppsScript ライブラリです。
  • DocNamedRangeApp : これは、Google ドキュメントの名前付き範囲を管理するための Google Apps Script ライブラリです。
  • RichTextAssistant : これは、Google Apps Script を使用した Google スプレッドシートのリッチテキストの編集をサポートするためのライブラリです。
  • UtlApp : Google Apps Scriptによるアプリケーション開発をサポートする便利なスクリプトを集めたGoogle Apps Scriptライブラリです。
  • TemplateApp : Google スプレッドシートをデータベースとして利用した Google ドキュメントや Google スライドのテンプレートを Google Apps Script で簡単に管理するための Google Apps Script ライブラリです。
  • TriggerApp : Google Apps Scriptを使用してGoogle Apps Scriptを実行するための時間駆動トリガーを効率的に管理するためのGoogle Apps Scriptライブラリです。
  • PDFApp : PDF を管理するための Google Apps Script ライブラリです。
  • ScriptHistoryApp : Google Apps Script プロジェクトの履歴を管理するための Google Apps Script ライブラリです。
  • MicrosoftDocsApp : これは、Goolge Apps ScriptのDocument service, Spreadsheet service, Slides Serviceを使用してMicrosoft Docs files (Word, Excel, and PowerPoint files)を使用するためのライブラリです。
  • CorporaApp : Gemini API のコーパスを管理するための Google Apps Script ライブラリです。
  • ImageBotApp : これは、Gemini と Google Apps Script および Google Drive を使用した画像ボットです。
  • GoogleApiApp : Google Apps ScriptでGoogle APIを利用することをサポートするためのGoogle Apps Scriptライブラリです。
  • GeminiWithFiles : GeminiWithFiles と呼ばれる新しい Google Apps Script ライブラリは、大規模な言語モデルである Gemini の使用を簡素化し、画像や PDF などの非構造化データを処理します。 GeminiWithFiles は、ファイルのアップロード、コンテンツの生成、複数の画像からの説明の作成を一度に行うことができます。 これにより、作業負荷が大幅に軽減され、Gemini の使用可能性が広がります。
  • MoveFolder : これは、Google ドライブ上のファイルとフォルダを含むフォルダを移動するための Google Apps Script ライブラリです。
  • MimeTypeApp: これは、さまざまな MIME タイプから指定されたターゲット MIME タイプにファイルを変換するための Google Apps Script ライブラリです。ライブラリは、ファイル ID と BLOB の両方を入力値として受け入れます。

GAS ライブラリデータベース


Go ライブラリ

  • go-getfilelist:これは、Google ドライブの特定のフォルダーからフォルダーツリーを含むファイルリストを取得するための Golang ライブラリです。
  • go-gettokenbyserviceaccount:これは、Google の OAuth2 パッケージを使用せずに Google のサービスアカウントからアクセストークンを取得するための Golang ライブラリです。
  • go-gdoctableapp:これは、Google DocsAPI を使用して Google ドキュメントのテーブルを管理するための Golang ライブラリです。

Node.js モジュール

  • node-getfilelist:これは、Google ドライブの特定のフォルダーからフォルダーツリーを含むファイルリストを取得するための Node.js モジュールです。
  • node-gdoctableapp:これは、Google DocsAPI を使用して Google ドキュメントのテーブルを管理する Node.js モジュールです。

Python ライブラリ

  • getfilelistpy:これは、Google ドライブの特定のフォルダーからフォルダーツリーを含むファイルリストを取得するための Python ライブラリです。
  • gdoctableapppy:これは、Google DocsAPI を使用して Google ドキュメントのテーブルを管理するための Python ライブラリです。

Javascript ライブラリ

  • GetFileList_js:これは、Google ドライブの特定のフォルダー(パブリック共有フォルダーと独自のフォルダー)からフォルダーツリーを含むファイルリストを取得するための Javascript ライブラリです。
  • syncGoogleScriptRun:これは同期プロセスで「google.script.run」を使用するための Javascript ライブラリです。
  • ResumableUploadForGoogleDrive_js:これは、Google ドライブの再開可能なアップロードを実現するための Javascript ライブラリです。
  • BatchRequest_js:これは、Javascript を使用して GoogleAPI のバッチリクエストを実行するためのライブラリです。
  • HtmlFormObjectParserForGoogleAppsScript_js:これは、 google.script.runを使用して HTML フォームオブジェクトを GoogleAppsScript に送信するための Javascript ライブラリです。
  • GetAccessTokenFromServiceAccount_js:これは、Google サービスアカウントからアクセストークンを取得するための Javascript ライブラリです。
  • [画像を枠で切り抜く Javascript ライブラリ : 画像を枠で切り抜くための Javascript ライブラリです。

アドオン

  • RearrangeScript:スクリプトエディターで表示できるプロジェクトで Google Apps Scripts(GAS)を再配置します。GitHub
  • ShapeApp:Google スライドで図形を操作します。パラメータを入力して図形を作成・更新したり、図形を配置したりできます。これは、Google Apps Scripts(GAS)で構成されています。GitHub

レポート

配列要素を合計するための効率的なアルゴリズムを検討しました。配列内のすべての要素は文字列です。これらの要素をスクリプトを使用して合計する場合、標準的な方法は、各要素を順番に追加することです。スクリプトを最適化せずに実行すると、合計プロセス中のアクティブなデータの合計量が配列要素の数の 2 乗に比例するため、プロセスは徐々に遅くなります。これは、高いプロセスコストに直接つながります。このような現象は、特に Google Apps Script(GAS)で発生します。このレポートでは、ピラミッド法の新しいアルゴリズムを使用したこの問題の解決について説明しています。ピラミッド法では、アクティブなデータの総量が配列要素の数の線形に比例して増加します。これで、処理時間は、標準的な方法を使用するプロセスよりもはるかに短くなります。ピラミッド法は、GAS の標準法と比較して 99.7%のプロセスコスト削減を達成しました。身近な日常のシーンに新たな発見が隠されていることに改めて気づきました。

最近の Google アップデート(2017 年 10 月 24 日の Google アップデート)によって、GAS 開発者にさまざまな新しい風が吹きました。新しい風の一つとして「マニフェスト」があります。「マニフェスト」を使用すると、JSON を使用してプロジェクトを管理できます。特に、OAuth2 プロセスを使用する必要がある特別なスコープは、マニフェストに設定するだけで使用できます。これが最大の変更だと思います。ただし、マニフェストを使用してスコープをプロジェクトに追加する場合、プロジェクトを使用するユーザーは、追加されたスコープのみを使用できます。つまり、ユーザーがプロジェクトでスクリプトを作成するときに、追加する必要のあるスコープがある場合、そのようなスコープを自動的に追加することはできません。そのため、「権限が不十分です」というエラーが発生します。このレポートでは、この問題を回避するための回避策を紹介します。

これは、Google スライドの図形の特定の値と取得された値の違いを説明するためのドキュメントです。

Google Apps Script(GAS)を使用するアプリケーションの 1 つとして WebApps があります。私は時々この Web アプリを使用します。しかし、私は Web アプリの仕様に関する情報を少ししか持っていません。そこで、Web アプリをさらに活用するために、これについて調査して要約しました。このレポートの目的は、GAS で Web アプリを使用してさまざまなアプリケーションを作成するための基本情報の 1 つになることです。

ここでは、Google Apps Script(GAS)を使用してスプレッドシートに挿入するための画像の制限について紹介します。GAS を使用してスプレッドシートに画像を挿入する場合、通常、この状況ではクラス Sheet の insertImage()が使用されます。このとき、エラーが発生することがあります。これは、スプレッドシートへの画像の挿入に制限があることを示しています。そこで、制限を調べました。その結果、制限はファイルサイズではなく画像領域(pixels ^ 2)に依存することがわかりました。挿入できる画像の最大面積は 1,048,576 ピクセル^ 2 でした。

これは、イベントトリガーを使用した非同期プロセスの可能性に関するレポートです。単純なトリガーである onEdit()は、スプレッドシートで値が変更されたときのトリガーとしてよく使用されます。ユーザーが onEdit イベントとして承認される必要があるいくつかのメソッドを含むスクリプトを使用したい場合、onEdit のインストール可能なトリガーが使用されます。onEdit()の機能のためにトリガーがインストールされている場合、イベントトリガーを実行すると、 onEdit()が 2 回実行されます。これを回避するために、単純なトリガーの機能以外の機能にインストール可能なトリガーをインストールします。同じイベントである単純なトリガーの機能は、プロジェクトでは使用されません。この状況を考えたとき、単純なトリガーで実行される onEdit()とインストール可能なトリガーで実行される関数の両方を同時に使用できるのではないかと思いました。そこで私はこの状況について調査しました。その結果、以下の単純なトリガーとインストール可能なトリガーが非同期プロセスとして機能することがわかりました。

V8 が有効になっている場合、 Array.applyには要素数の制限があります。制限を超えると、「RangeError:最大呼び出しスタックサイズを超えました」などのエラーが発生しますが、V8 が無効になっている場合は問題は発生しませんでした。この場合、この問題は Google AppsScript と Javascript の両方で発生します。ですのでご注意ください。

テンプレートリテラルの //がスクリプトエディタの HTML ファイルで使用される場合、コメントの開始として使用されます。

「GoogleAppsScript で onSelectionChange イベントトリガーを使用した Google スプレッドシートでのタブの変更の検出」についてはすでに報告しました。参照It onSelectionChangeのイベントトリガーを使用する状況を考える場合、応答速度が重要であると考えられます。そこで、ここでは、 onSelectionChangeのイベントトリガーに対する応答の特性を調査しました。

これは、Google AppsScript を使用して Google スプレッドシートですばやくチェックされたチェックボックスを検出するためのレポートです。チェックボックスをオンにすると、イベントトリガーによって Google AppsScript の機能が実行されると想定しています。この場合、Google スプレッドシートの複数のチェックボックスをすばやくオンにすると、イベントトリガーの応答速度が原因で、チェックしたすべてのチェックボックスに対してスクリプトを実行できません。イベントトリガーの応答を理解することは、スプレッドシートのアプリケーションを作成するのに役立つと考えられます。このレポートでは、Google AppsScript を使用して Google スプレッドシートですばやくチェックされたチェックボックスの検出について調査しました。この結果から、イベントトリガーの応答を理解することができました。

このレポートでは、DriveAPI を使用して特定のフォルダーに新しいファイルを作成するための処理についてレポートします。Drive API を使用して特定のフォルダに新しいファイルを作成すると、フォルダ ID の値を持つ parentsのプロパティが、メソッド「Files:create」のリクエスト本文に含まれます。このプロセスについて、私はファイルが特定のフォルダに直接作成されると思っていました。しかし、次のプロセスで新しいファイルが作成されていることを確認できました。

1。ルートフォルダに新しいファイルを作成します。 2。作成したファイルを特定のフォルダに移動します。

これらのプロセスは 1 回の API 呼び出しで実行されます。本報告では、上記の過程を確認するための実験結果を紹介したいと思います。この場合、Drive APIv3 は GoogleAppsScript で使用されます。

Stackoverflow では、多くの人が毎日質問を投稿して回答しています。これにより、Stackoverflow には多くの重要な情報があります。Stackoverflow から取得したデータを使用して、「Stackoverflow での google-apps-script タグの傾向」をすでに報告しました。参照重要な統計結果は、 Stackoverflow のデータ。このレポートでは、Stackoverflow の google-apps-script タグの重複した質問の統計分析を紹介します。重複した質問を分析すると、ユーザーにとって重要な問題を知ることができると考えられます。その結果、Javascript に関連する質問が重複する傾向があることがわかりました。

[Google AppsScript を使用した外部サーバーでの HTML による Google ドライブの安全なアップロード](https://github.com/tanaikech/Safe-Uploading-for-Google-Drive-by-HTML-in-External-Server -using-Google-Apps-Script)

これは、Google AppsScript を使用して外部サーバーに配置された HTML によってファイルを Google ドライブに安全にアップロードするためのレポートです。

ユーザーに Google 側の外部サーバーに配置された HTML を使用して自分の Google ドライブにファイルをアップロードさせたい場合、ファイルサイズが 50 MB 未満の場合、アクセストークンを使用せずにこれを実現できます。参照(HTML が内部に配置されている場合 Google 側のサーバーでは、google.script.run。)ただし、ファイルサイズが 50 MB を超える場合は、再開可能なアップロードでファイルをアップロードする必要があります。この場合、アクセストークンを使用する必要があります。この場合、ユーザーが自分の Google ドライブにアップロードする場合、アップロードでアクセストークンが使用されると、これがセキュリティの弱点と考えられます。このレポートでは、Google Apps Script を使用して外部サーバーに配置された HTML によってファイルを Google ドライブに安全にアップロードする方法を提案したいと思います。これをいくつかの方法の 1 つと考えてください。

このレポートでは、Drive API のファイルリストメソッドの検索クエリの現在の仕様について報告したいと思います。

最近、Drive API のファイルリストメソッドの検索クエリの仕様が変更されている可能性があることに気付きました。Drive API を使用してアプリケーションを作成するには、検索クエリの仕様の変更を知ることが重要だと思いました。このレポートでは、検索クエリの現在の仕様を紹介します。

ユーザーがフォームを使用してスプレッドシートに書き込もうとする場合、開発者はフォームからの同時送信を考慮する必要があります。たとえば、複数のユーザーがフォームを使用してデータを同時に送信した場合、すべてのデータがスプレッドシートに保存されない可能性があります。そのため、フォームを使用した Google スプレッドシートへの同時書き込みに関する情報を知ることが重要であると考えられます。このレポートでは、そのような状況を調査しました。

その結果、Google Spreadsheet への同時書き込みの成功率を調査したところ、Google AppsScript で作成した WebApps よりも GoogleForm との同時書き込みの方が適していることがわかりました。スプレッドシートへのすべてのデータの書き込みに成功するためのユーザーのしきい値数は、Google フォームでそれぞれ 35、Web アプリで 26 でした。また、Web Apps を使用する場合、複数の送信には必ず LockService を使用する必要があることがわかりました。

このレポートでは、Google スプレッドシートの大きな 10 進数と指数表記を調査しました。大きな 10 進数がスプレッドシートに入力されると、スプレッドシートは指数表記を使用して表示値を自動的に設定します。このレポートでは、Spreadsheet サービスと Sheets API によって値が取得されたときの結果が示されています。

これは、Google スプレッドシートに「=IMAGE(IMAGE_URL)」関数を使用して配置された画像に関するレポートです。

スプレッドシートのセル「A1」に「=IMAGE(IMAGE_URL)」を付けると、そのセルに画像が表示されます。この場合、セル「A1」を「range.copyTo(range、{contentsOnly:true})」でコピーすると、数式が削除され、画像が表示されます。URL の画像を削除すると、それらの画像はどうなるのかと思いました。このレポートでは、そのような状況を調査しました。

[Google Apps Script を使用した Google スプレッドシートでの無限ループの発生と解決](https://gist.github.com/tanaikech/c385bed8f037d67b154d9c0c8ff7a341)

ここでは、Google AppsScript を使用して Google スプレッドシートで無限ループが発生して解決するためのレポートを紹介します。 これを Google の課題追跡システムに報告しました。

[Google Apps Script を使用した Google スプレッドシートへのスプレッド構文と分割代入の適用](https://gist.github.com/tanaikech/d0c60aa54fb55fc61a06593e311fa623)

このレポートでは、GoogleAppsScript を使用してスプレッド構文と分割代入を GoogleSpreadsheet に適用する方法を紹介します。 最近、Stackoverflow でそれらを使用しているスクリプトをよく見ました。 また、スプレッド構文と破壊的代入に関連する質問を時々受けます。 ということで、ブログで紹介したいと思いました。

2022 年 3 月 14 日、「Google スプレッドシートがセル制限を 2 倍にする」と報告しました。 [参照](https://workspaceupdates.googleblog.com/2022/03/ten-million-cells-google-sheets.html)この更新により、ユーザーはGoogleスプレッドシートで10,000,000個のセルを使用できるようになりました。 これは私たちにとって素晴らしいニュースです。 Google Apps Script を使用して Google スプレッドシートで 10,000,000 個のセルを処理しようとすると、さまざまな重要なポイントがあることがわかりました。 このレポートでは、GoogleAppsScript を使用して Google スプレッドシートで 10,000,000 個のセルを処理するための重要なポイントを紹介します。

これは、GoogleAppsScript を使用して GOOGLEFINANCE から値を取得するためのレポートです。 Google AppsScript を使用して GoogleSpreadsheet のGOOGLEFINANCE関数から値を取得するためにテストしたところ、値を取得できることに気付きました。

これは、GoogleAppsScript を使用して同じ URL でさまざまな Google ドキュメントファイルを公開するためのサンプルメソッドです。

2022 年 5 月 25 日に更新することにより、コンテンツを新しい Google サイトにフルページとして埋め込むことができるようになりました。 Ref このメソッドでは、これが使用されます。

これは、GoogleAppsScript の機能に関するドキュメントコメントのレポートです。

Google Apps Script の機能に関するドキュメントのコメントを検討すると、JsDoc を思い浮かべます。 Google Apps Script では、JsDoc の一部を使用できます。 しかし、このレポートでは、JsDoc を含むドキュメントコメントを紹介したいと思います。

これは、Google Apps Script を使用した Google スプレッドシート上の画像の管理に関するレポートです。

2018 年 10 月 30 日、Cass OverGridImage と inserImage のメソッドが Spreadsheet Service に追加されました。 2022 年 1 月 19 日、Class CellImageBuilder と Class CellImage がスプレッドシートサービスに追加されました。 これらのクラスとメソッドにより、画像を Google スプレッドシートで管理できるようになりました。 しかし、さまざまな状況で画像を使用する場合、画像の管理には工夫が必要な場合があります。 そこで、このレポートでは、Google Apps Script のサンプルスクリプトを使用した Google Spreadsheet での画像の管理について紹介します。

スプレッドシートで選択したセルを Google Apps Script と Javascript を使って画像としてエクスポートすることに挑戦したレポートです。

これは、Google Apps Script ライブラリを使用して Web アプリを効率的に作成するためのサンプル スクリプトです。

Google Apps Script ライブラリを使用して Web Apps を作成すると、次の利点が得られます。

  • クライアント側のスクリプトをよりシンプルにできます。 Web Apps を構築するためのほとんどのスクリプトは、Google Apps Script ライブラリに含まれているためです。
  • Web Apps のスクリプト (この場合は、Google Apps Script ライブラリのスクリプトを変更します) を変更すると、最新のスクリプトがすぐに Web Apps に反映されます。ライブラリのスクリプトを変更する際に、Google Apps Script ライブラリを最新バージョンとして使用すると、クライアントはライブラリの最新のスクリプトをすぐに使用できるためです。そのため、Web Apps のダウンタイムを減らすことができます。 ・これにより、手動で最新バージョンのスクリプトを Web Apps に反映させる必要がなくなります。
  • ライブラリのデプロイ バージョンを変更することで Web Apps のスクリプトを変更できる場合。

Google Apps Script には Web Apps があります。 Web Apps を使用すると、ユーザーは HTML と Javascript を使用して Google Apps Script を実行できます。 これは、さまざまなアプリケーションに適用できます。 「誰でも」で Web アプリをデプロイすると、誰でも Web アプリにアクセスできます。 また、「誰でも」で展開したWebアプリを利用する必要がある場合があります。 このような状況下で、2 要素認証 (2FA) を実装できれば、より高いセキュリティを実現できると考えられ、Web Apps を使用したアプリケーションにさまざまな方向性を与えることにつながります。 本レポートでは、Google Apps Script を使用して、「誰でも」でデプロイした Web Apps に疑似 2FA を実装する方法を紹介したいと思います。

Google Apps Script が Google スプレッドシートを管理するための強力なツールであることは既に知られています。 値を取得したり、Google スプレッドシートに配置したりする場合、不連続なセルを使用する必要がある場合があります。 このレポートは、Google スプレッドシートで不連続なセルを処理するためのベスト プラクティスを提案します。 処理コストの結果から、Google Apps Script で Sheets API とスプレッドシート サービスの Class RangeList を使用して低コストで不連続セルを使用することの有用性が理解できました。

このレポートでは、PropertiesService の詳細な仕様を調査しました。 この仕様を知っておくと、Google Apps Scriptでアプリケーションを開発する際に役立つと考えられます。 その結果、キーと値の最大サイズは、キーが 1 バイトの場合は 524,287 バイト、値は 8,066 バイトであることがわかりました。 また、PropertiesService の最大サイズは、キーと値の両方のサイズを考慮する必要があることがわかりました。

本レポートでは、Google スプレッドシートをデータベースとした HTML フォームを Google Apps Script を使って簡単に実装する方法を紹介します。 Google Apps Scriptを使用したHTMLフォームには2パターンあります。 1 つは、HTML フォームが同じ Google Apps Script プロジェクトに配置されることです。 もう 1 つは、HTML フォームが Google Apps Script プロジェクトとは別のサーバーに配置されることです。 本レポートでは、両方のパターンを簡単に実装する方法をサンプルスクリプトを用いて紹介します。

最近、Stackoverflow での質問にこれまでにない変化を感じました。 これを裏付けるために、本レポートでは2023年上半期(1月1日~6月1日)のStackoverflowにおける「google-apps-script」タグの動向を調査した。 このレポートから、新型コロナウイルス感染症の影響が社会的に薄れた2023年において、「google-apps-script」のタグを含む質問に顕著な傾向が確認された。 この顕著な傾向の起源は、AI チャットボットによるものと推測されます。 AIチャットボットの登場は、オンラインサイトから得られる統計データの把握方法に大きな変化をもたらすかもしれません。

ここでは、Google Apps Scriptで作成したWeb Appsへのリクエストの流れを理解するためのレポートを紹介したいと思います。 Web Appsを利用した様々なアプリケーションを作成し、Web AppsをWebhookとして利用する場合があります。 その場合、Web Appsへのリクエストの流れを理解しておけば、スムーズに目的を達成できるのではないかと考えられます。 本稿ではその情報を紹介したい。

このレポートでは、google.script.run を使用して HTML と Google Apps Script の間で転送するために使用できる値を紹介します。

Google Apps Scriptのスクリプトエディタのオートコンプリートを利用するためのレポートです。

Google Apps Script はクラウドコンピューティングの強力なツールの 1 つであり、さまざまな場面で非常に役立ちます。 Google Apps Script はさまざまな方法で実行できます。 本レポートでは、Google Apps Scriptの実行方法を紹介します。 最近、生成 AI により、多くの新規ユーザーに Google Apps Script を使用する機会が与えられました。 このレポートがユーザーの皆様の Google Apps Script を使用したアプリケーション開発の一助になれば幸いです。

Google Apps Scriptを利用した飲食予約システムです。

これは、2024-01-01 - 2024-12-31 の Stackoverflow での私のアクティビティの統計です。


ベンチマーク

  • e.range.getA1Notation()のプロセスコストは、e.source.getActiveCell().getA1Notation()SpreadsheetApp.getActiveSheet().getActiveCell().getA1Notation()のプロセスコストの 20%と 10%程度であることがわかりました。
  • 配列から 5 の倍数を取得するためのサンプルスクリプトの場合、「map、filter」を使用したループが最適な方法です。各メソッドのコストの昇順は、「map、filter」、「Comprehension」、「forEach」、「for in」、「for loop」、「while」です。
  • 「forEach」、「Comprehension」、「map、filter」のコストは、「for in」、「for loop」、「while」のコストよりも低くなります。
  • push()と new Array()のコストはほぼ同じです。 -配列を 1 次元配列から 2 次元配列に変更すると、「Comprehension」、「forEach」、「map、filter」のコストの増加率は、「for in」、「forloop」のコストの増加率よりもはるかに低くなります。 "と" while "。
  • 「for ループ」を使用する従来の方法については、このレポートの結果を使用して新しい方法を提案できます。
  • 「reduce」の場合、1 次元配列と 2 次元配列の間のプロセスコストはほぼ同じです。
  • fetchAll メソッドが非同期処理によって機能することがわかりました。 -非同期処理で機能した後、戻り値はリクエストの順序で並べ替えられます。 -複数の URL からデータを取得する場合、 UrlFetchApp.fetchAll()のプロセスコストは、for ループを使用する UrlFetchApp.fetch()のプロセスコストよりもはるかに低いことがわかりました。
  • indexOf()による検索のプロセスコストは、すべてのメソッドの中で最低でした。
  • 2 番目と最後の 1 つは、それぞれ for ループによる検索とハッシュによる検索でした。 -ハッシュによる検索については、オブジェクトからのハッシュによる検索のコストは非常に低いですが、ハッシュを検索するためのオブジェクトを作成するためのコストはすべての中で最も高かったです。これにより、ハッシュによる検索が最低ランクになりました。検索対象が既に作成されている場合は、ハッシュによる検索のコストが最も低くなります。
  • indexOf を使用した検索は、線形検索およびハッシュを使用した検索から 99%以上のプロセスコストを削減できます。 -これらの結果から、indexOf()のスキャンは一般的な for ループとは異なる可能性があると考えられます。
  • 「三項演算子」のコストは、すべての方法と条件の中で最も低いことがわかりました。 -単一の条件分岐の場合、2 番目は「If」でした。ただし、複数の条件分岐の場合、「スイッチ」は 2 番目の分岐でした。これは、「If」と「Switch」がそれぞれ単一および複数の条件付きブランチ(2 つ以上のブランチ)に適していることを示しています。 -複数の条件分岐の場合、「真」の可能性が高い条件を前面に出すことで、処理コストを削減できます。 -「論理演算子」は、単一および複数の条件分岐の最低ランクでした。「論理演算子」は、コストが高く、読みやすさが低いため、一般的な用途には適さないと考えられます。
  • 「逆配列を使用したフィルター」により、「for ループの減少」と比較してプロセスコストが 43%低くなります。 -「逆配列」は、作成されたサンプル配列の「Array.prototype.reverse()」を使用して取得されました。 -「for ループの減少」は「for ループの増加」とほぼ同じです。 -「reverse()」のコストは、「for ループ」と「フィルター」に対して十分に小さいです。

このレポートでは、スプレッドシートの読み取りと書き込みのプロセスコストを調査しました。この調査から、以下の結果が得られました。

  • スプレッドシートから値を読み取るためのプロセスコスト
  1. Spreadsheet Service の getValues()と getSheetValues()の処理コストはほぼ同じです。
  2. SheetsAPI の values.get と values.batchGet のプロセスコストはほぼ同じです。
  3. Sheets API のメソッドは、Spreadsheet Service のプロセスコストから約 35%のプロセスコストを削減できます。 -スプレッドシートから値を書き込むためのプロセスコスト
  4. Sheets API の values.update、values.batchUpdate、values.append のプロセスコストはほぼ同じです。
  5. Sheets API のメソッドは、Spreadsheet Service のプロセスコストから約 19%のプロセスコストを削減できます。
  6. Spreadsheet Service の setValues()と SheetsAPI のメソッドの間には反転点があります。 -データサイズが小さい場合、setValues()は値の書き込みに適しています。 -データサイズが大きくなると、SheetsAPI のメソッドが値の書き込みに適しています。

これらの結果から、Spreadsheet of Sheets API の読み取りと書き込みの方法は、Spreadsheet サービスの方法とは異なるアルゴリズムやプロセスを使用していると考えられます。

このレポートでは、GAS を使用して CSV データをスプレッドシートにインポートするためのプロセスコストを調査しました。その結果、以下の結果が得られました。

  • SheetsAPI の pasteDataを使用する pattern4 が、すべての中で最も低コストであることがわかりました。
  • CSV データをスプレッドシートにインポートするために pattern4 を使用すると、値の解析と書き込みの方法を使用する pattern1 と pattern2 からコストを 56%削減できます。
  • CSV データをスプレッドシートにインポートするために pattern4 を使用すると、mimeType を CSV からスプレッドシートに変換するメソッドを使用する pattern3 からコストを 72%削減できます。

このレポートでは、GAS と V8 ランタイムを使用したアレイ処理の「ループ」のプロセスコストを調査しました。その結果、V8 を搭載した GAS の以下の重要な機能が見つかりました。

  • 配列から 5 の倍数を取得するためのサンプルスクリプトの場合、「for loop」、「while」、「forEach」、「map、filter」、「reduce」を使用したループコストはほぼ同じです。 -「forin」の場合、プロセスコストは「for loop」、「while」、「forEach」、「map、filter」、「reduce」よりも高くなります。しかし、それを V8 なしの条件と比較すると、V8 を使用した場合の「forin」のコストは、V8 を使用しない場合よりもはるかに低くなります。 -push() new Array()のコストはほぼ同じです。 -ループプロセスに v8 ランタイムを使用する場合、V8 を使用しないスクリプトと比較すると、プロセスコストを大幅に削減できます。 -「forloop」、「for in」、「while」、「forEach」、「map、filter」、「reduce」のすべてのメソッドで、1D 配列の場合は 97.0%、2D 配列の場合は 98.4%のプロセスコストが発生する可能性があります。削減されます。

このレポートでは、V8 での 7 つの状況のプロセスコストが測定されました。その結果、以下の結果が得られた。

  1. 矢印機能がある場合とない場合のプロセスコストはほぼ同じでした。
  2. プロセスコスト「includes」と「indexOf」はほぼ同じでした。
  3. 破壊的割り当てを使用した場合、コストは破壊的割り当てを使用しない場合よりも約 15%高くなりました。
  4. Map オブジェクトがある場合とない場合のプロセスコストはほぼ同じでした。 -しかし、この場合、結果をオブジェクトとして取得するために、 Object.fromEntriesのコストが追加されます。また、 Object.fromEntriesを使用しない場合、Map オブジェクトを使用した場合のコストは Map オブジェクトを使用しない場合よりも約 20%低くなりました。
  5. Array.prototype.pushのプロセスコストは、 Array.prototype.push.apply、Spread 構文、および concatの中で最も低かった。Spread 構文と concatのコストは、 Array.prototype.pushよりもそれぞれ約 3,040%と 36,666%高かった。
  6. reduceのみのプロセスコストは、 reduceObject.assign、および Spread 構文のみの中で最も低かった。Object.assignと Spread 構文のコストは、 reduceのみのコストよりもそれぞれ約 265%と 448,063%高かった。
  7. Array.fromとマップのみの処理コストはほぼ同じでした。Object.entriesのコストは Array.fromのコストよりも約 131%高かった。

ここでは、Google Apps Script(GAS)を使用してスプレッドシートで値を検索するためのプロセスコストを報告したいと思います。Google スプレッドシートで値を検索すると、次の 3 つのパターンが考えられます。参照

  1. getValues を使用してすべての値を取得し、取得した配列から値を検索します。
  2. TextFinder を使用します。
  3. クエリ言語を使用します。

これらの場合、最も低いプロセスコストはクエリ言語を使用することであることがすでにわかっています。そして、配列から値を見つけることについて、私はすでに「ベンチマーク:Google Apps Script を使用した配列処理の検索」として報告されています。しかし、TextFinder のプロセスコストを要約して、配列から値を見つけることは一度もありませんでした。そこで、このレポートでは、これを紹介したいと思います。その結果、値を検索して行番号と行値を取得するための TextFinder の重要性を理解することができました。

ここでは、Google Apps Script(GAS)を使用してスプレッドシートの配列から値を取得するためのプロセスコストを報告します。Spreadsheet を GoogleApps Script で使用すると、次のような状況になります。

  1. 列の複数の行から値を取得します。
  2. 行の複数の列から値を取得します。

上記の状況から値を取得する場合、2 次元配列の 1 次元配列から値を取得する必要があります。このレポートでは、上記の状況の 2 次元配列から値を取得するためのプロセスコストが測定されています。

その結果、1 列に n 行、1 行に n 列の配列から値を取得する場合、破壊代入を使用する場合とインデックスを使用する場合がそれぞれ適切であることがわかりました。

Google スプレッドシートを使用する場合、セル内の組み込み関数とカスタム関数が使用される場合があります。Google Apps Script の機能には、プロセスコストを測定する方法があります。参照ただし、組み込み関数の場合は、そのスクリプトを作成する必要があります。このレポートでは、セルに配置された関数を測定するためのスクリプトを提案し、組み込み関数のプロセスコストを測定しました。提案されたスクリプトは、Google スプレッドシートの組み込み関数とカスタム関数のプロセスコストを測定できます。スクリプトは、Google AppsScript を使用して作成されます。組み込み関数とカスタム関数のプロセスコストがわかる場合、

ここでは、Google Apps Script(GAS)を使用して、GoogleSpreadsheet の特定の列の最初の空のセルまたは最初の空でないセルを取得するためのプロセスコストを報告します。この場合、次の 2 つのパターンが考えられます。

  1. シートのTOPから検索して、特定の列の最初の空のセルを取得します
  1. シートのBOTTOMから検索して、特定の列の最初の非空のセルを取得します

実際、GAS を使用してアプリケーションを作成する場合、特定の列の最初の空のセルまたは最初の空でないセルを取得する必要がある場合があります。ただし、その場合は、アプリケーションの他の部分と比較して、このプロセスコストを可能な限り低くしたいと思います。このような経験から、この処理コストを削減できれば、他のユーザーにも役立つと思いました。そこで、このレポートでは、この状況のプロセスコストを紹介したいと思います。そして、以下の結果が得られた。

  • シートの**TOP **から検索して特定の列の最初の空のセルを取得するには、 getNextDataCellを使用するメソッドのプロセスコストがすべてのメソッドの中で最も低くなります。
  • シートの**BOTTOM **から検索して、特定の列の最初の非空のセルを取得するには、 TextFinderを使用するメソッドのプロセスコストがすべてのメソッドの中で最も低くなります。

709 / 5,000 翻訳結果

Google Apps Script プロジェクトで HTML を使用する場合、Google Apps Script 側からの値を表示するために、HTML テンプレートが使用されます。 大きな値の HTML テンプレートを使用したところ、スクリプトを工夫することでプロセスコストを削減できることがわかりました。 このレポートでは、ベンチマークを使用した HTML テンプレートのプロセスコストを紹介します。

その結果、Google Apps Script で HTML テーブルを作成し、HTML テンプレートで HTML テーブルを表示すると、処理コストが低くなることが明らかになりました。 また、HTML テンプレートを使用するためのプロセスコストを削減するために、GoogleAppsScript 側で HTML データを準備する必要があることがわかりました。

XML データから値を取得するために、Google Apps Script を使用して XML データを解析する場合、データを解析する方法はいくつかあります。 XML データを管理するための組み込みクラスであるクラス XmlService は、それを思い付く最初の方法かもしれません。 Stackoverflow では、XML データがクラス XmlService を使用して解析されることが多いという質問が投稿されています。 クラス XmlService は XML データの管理に適していると考えられています。

しかし、以前に Google Apps Script で XML データを使用してアプリケーションを作成したことがあると、クラス XmlService のプロセスが高い可能性があると感じました。 そのため、このレポートでは、GoogleAppsScript を使用して XML データを解析するためのプロセスコストを示しています。 その結果、V8 ランタイムがリリースされた後、XML データを解析するためのクラス XmlService 以外のメソッドも使用できることがわかりました。

これは、Google Apps Script を使用して、Google スプレッドシートの多くの値を低処理コストで高効率に検索および置換するためのサンプル スクリプトです。

Google Apps Script を使って Google スプレッドシートで各種値を置き換える場合、処理コストが気になります。 そこで本レポートでは、これを高効率で実現するためのサンプルスクリプトを紹介したいと思います。

その結果、サンプルシチュエーションを用いて、Sheets API を利用したサンプルスクリプトとスプレッドシートサービス(SpreadsheetApp)を利用したサンプルスクリプトの処理コストを比較したところ、Sheets API を利用した上記スクリプトの方が処理コストを削減できることがわかりました。 スプレッドシート サービスを使用したスクリプトより約 70% 短縮されました。

Google Apps Script (GAS) には最大実行時間があります。 つまり6分です。 また、カスタム機能や簡易トリガーの場合は30秒です。 そのため、ユーザーはスクリプトの処理コストを削減することに常に注意を払う必要があります。 特に、配列処理はスプレッドシートや Google API などでよく使われるため、配列処理の処理コストを把握しておくことは非常に重要です。 配列処理については「ベンチマーク:V8でGoogle Apps Scriptを使った配列処理のループ」と「Google Apps Scriptを使った配列処理の検索」で報告済みです。 このレポートでは、Google Apps Script を使用して 1 次元配列の値をチェックするプロセス コストを調査しました。

1 次元配列と 2 次元配列から値を検索する場合、V8 ランタイムが使用できるようになった後、JSON オブジェクト、Set オブジェクト、Map オブジェクトを使用します。 しかし、私はこの状況のプロセス コストを測定したことがありませんでした。 この投稿では、JSON オブジェクト、Set オブジェクト、および 1 次元配列と 2 次元配列から変換された Map オブジェクトを使用して値を検索する場合の処理コストを紹介します。


コミュニティ

Google+のコンシューマー(パーソナル)バージョンは 2019 年 4 月 2 日に閉鎖されます。これにより、Google+の Apps Script コミュニティも閉鎖されます。これは、議論するための重要なコミュニティの 1 つです。そこで、この投稿では、Google AppsScript に関連する他のコミュニティを紹介したいと思います。


サンプルスクリプト

Google ドライブのファイル

Projects

Spreadsheets

Documents

Slides

Gmail

Calendar

Form

YouTube

Chart

Analytics

Slack

仮想通貨

Stackoverflow

Netatmo

Figma

Microsoft

この場合、Microsoft の API とリソースは Google AppsScript で使用されます。

その他

Node.js

Golang

Python

Curl

Javascript

PHP

生成AI

TOP