どうも。つじけ(tsujikenzo)です。このシリーズは「Google documentとスプレッドシートを連携しよう」ついてですが、今日はその【中編】をお届けします。
前回までのおさらい
前回は「document API」なるものがあってGASでducumentの操作ができますよということをお伝えしました。
今日は中編として「スプレッドシートにdocumentの一覧を出力しよう」をお送りします。
スプレッドシートにdocumentの一覧を取得する準備
最終的にはスプレッドシートのリストからdocumentを大量に作成したいですが、「既に作成したdocumentをリストにしたいんだけど・・・」という声も聞こえます。私も既にブログのdocumentが溜まっていて整理したかったです。TRYしてみましょう。
スプレッドシートのコンテナバインドを開く
適当なスプレッドシートを準備して、コンテナバインドスクリプトにコードを書いていきます。私はスプレッドシート[My Blog Reports]にコンテナバインドを作成しました。
folderオブジェクトを変数に格納する
DriveApp.getFolderById(id)メソッドを使って、フォルダオブジェクトを変数に格納します。idはdocumentが保存されているフォルダのidということですね。(後でidという変数名は使いそうなので、let宣言にしておきます。)
let id = 'documentが保存されているフォルダのid';
const folder = DriveApp.getFolderById(id);
file iteratorを回す
フォルダオブジェクト[const folder]には、たくさんのファイルが[ファイルオブジェクト]として格納されています。目には見えないので、これを1つずつ取り出して、ファイルのタイトル(名前)を確認したいと思います。while文を使います。
const files = folder.getFiles();
while (files.hasNext()) {
let file = files.next();
console.log(file.getName());
}
取れているみたいですね👏
2次元配列に格納する
それでは先ほどのコードを手直しして、タイトルを2次元配列に格納するようなコードにしましょう。配列を準備してpush()ですね。最終的に2次元配列にしたいので、push()する時に[]で囲んでいることに気をつけてくださいね。
const files = folder.getFiles();
const titles = [];
while (files.hasNext()) {
let file = files.next();
titles.push([file.getName()]); //[[],[]]
}
console.log(titles);
ログを見て見ましょう。2次元配列[[タイトル1],[タイトル2],[],[]]の形式になっているようですね👏👏👏
スプレッドシートにsetValues()
ここまで来たら皆さんはスプレッドシートに出力できますよね。貼り付けてみましょう。
const sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1,1,titles.length, titles[0].length).setValues(titles);
おぉぉ、貼り付けできたみたいですね👏👏👏👏👏
まとめ
以上で、「スプレッドシートにdocumentの一覧を出力しよう」をお送りしましたが、いかがでしたでしょうか。これができるということは、各documentの文字数もスプレッドシートで管理できそうですね。今回はその方法については割愛しますが、可能性は無限大ですね💦
それでは次回は最終回として、スプレッドシートからdocumentを生成してみたいと思います。