[GAS]Document APIを使ってスプレッドシート連携しよう【前編】

GAS

どうも。つじけ(tsujikenzo)です。このシリーズでは「Google documentとスプレッドシートを連携しよう」ついて【前編・中編・後編】でお伝えしようと思います。今日は【前編】です。

Spreadsheet APIってなに

スプレッドシートで書くGASのこのようなコードですが、

const values = SpreadsheetApp.getActiveSheet().getDataRange().getValues();

これはGoogle Workspace ServicesSpreadsheet Serviceに属するトップレベルのオブジェクトClass SpreadsheetAppを操作しています。.getActiveSheet()や.getDataRange()はSpreadsheetAppにぶら下がっている配下のクラスを操作しています。

公式リファレンス

見た方が早いかもです。スクリプトエディタのメニュー[ヘルプ]から[APIリファレンス]をクリックします。

Google Workspace Servicesをクリックすると中にSpreadsheet Serviceがありますね。

SpreadSheetをプログラムで操作する為に、サーバーの指定された場所(エンドポイント)にこちらからリクエストを送ってレスポンスを受け取る技術の総称をAPI(エーピーアイ)と呼んでおり、我々は普段「APIを叩く」とか言います。(専門用語忘れた💦)私たちは知らず知らずのうちにSpreadSheet APIを叩いていたんですね。

Document API

そんなGoogle Workspace ServicesにはDocument APIが用意されているようです。

全てのクラスを使いこなす為には、Document Serviceの5つの階層構造(DocumentApp、ドキュメント、セクション、段落、コンテンツ)を理解しないといけませんが、今回は割愛させていただきます。

文字数を計ろう

document idの確認

まず操作したいdocumentのidを確認しておきましょう。

変数にBodyのテキストを格納する

目的のdocument idを使って、本文に書かれているテキストを変数に格納するところまで一気にいきます。スタンドアロンでもスプレッドシートかドキュメントのコンテナバインドでもどこにGASを記述しても問題ありません。

const id   = 'IDを入力';
const doc  = DocumentApp.openById(id);
const body = doc.getBody().getText();

ログで確認

ログで確認してみましょう。

console.log(body);

おぉ取れてるみたいですね👏

文字数を確認する

テキストの長さをlengthプロパティを使って確認してみましょう。

console.log(body.length);

文字数が確認できました。

[20-11-25 15:39:36:066 JST] 1055

documentの標準機能でも文字数を確認することができます。メニュー[ツール]の[文字カウント]をクリックしましょう。

若干誤差があるようですが(恐らく特殊な4バイト文字などが含まれている)、概ね良さそうです。

まとめ

ということで今回は「document API」なるものがあってGASでducumentの操作ができますよということをお伝えしました。スプレッドシートに値のリスト(○○様とか)を置いといて、宛名の違うdocumentを大量に発行したり、スプレッドシートに文書のタイトルリストを置いといて、特定の日付になったらdocumentを生成してメールでスタッフに送信するなんてこともできそうですね。

次回は中編として「スプレッドシートにドキュメントの一覧をリスト化しよう」をお送りします。可能性は無限大ですね💦

[GAS]Document APIを使ってスプレッドシート連携しよう【中編】
どうも。つじけ(tsujikenzo)です。このシリーズは「Google documentとスプレッドシートを連携しよう」ついてですが、今日はその【中編】をお届けします。前回までのおさらい前回は「document API」なるものが...

このシリーズの目次

  1. [GAS]Document APIを使ってスプレッドシート連携しよう【前編】
  2. [GAS]Document APIを使ってスプレッドシート連携しよう【中編】
  3. [GAS]Document APIを使ってスプレッドシート連携しよう【後編】
タイトルとURLをコピーしました