Google Apps Script入門

第8回 アルゴリズム概論

2026.05.28

はじめに

ブラウザの使い分けについて

準備

Chrome を 「2つ」 開いて使い分けます

Phase2の講義は、 Chrome の 「通常モード」「シークレットモード」2つ を同時に開いて、 用途で使い分けます。

通常のChrome

Google ドライブ / Apps Script

今日の 作業はこっち

シークレットモード

Google Meet (この講義)

Meet入室は こっち

※ Drive や GASエディタを シークレットモードで開かない ように注意 — シークレットモードはGoogleアカウントにログインしていないので、 今日の作業ファイルが見えません。ChatGPTなどのAIツールも通常のChromeで開くようにしてください!

Google ドライブの下準備

先にここを揃えてから今日の本題に入ります

Phase2

Phase2の準備

Phase2では Googleの世界(スプレッドシート・Drive・Gmail) を操作していきます。
少し「実務的」な内容になっていきます。まずは必要な準備をしていきます!

大前提として、 Googleアカウントがないと進められません。 まだの方は今すぐ作成してください。

準備

下準備の全体像

  1. Google ドライブで 講義用のフォルダ を作る
  2. その中に 各講義日のフォルダ を作る
  3. 2で作成したフォルダの中にそれぞれGoogle Apps Scriptファイル を作る
手順1

講義用のフォルダを作る

フォルダ名 — 「2026アルゴリズム概論」

  1. Chrome で drive.google.com を開く
  2. Google アカウントでログインする
  3. 左上の 「新規」 ボタンをクリック
  4. 「新しいフォルダ」 を選ぶ
  5. 名前を 「2026アルゴリズム概論」 にして「作成」
手順2

講義用フォルダ内にサブフォルダを作る

講義用フォルダの中に、 今後のためのフォルダを作ります

  1. 「2026アルゴリズム概論」フォルダをダブルクリックで開く
  2. フォルダの中で 「新規」「新しいフォルダ」
  3. 以下の名前で各フォルダを「作成」(合計3つ)
    • 「08_20260528」 ← 今日使う
    • 「09_20260604」 ← 次回
    • 「10_20260611」 ← 次々回
手順3

今日のGASファイルを作成する

今日使う 「08_20260528」 フォルダの中に、 Google Apps Script を1つ作ります。 ファイルの名前は 08_20260528_gas です。
※ 09・10 のフォルダには、 次回・次々回の授業のときに作ります。今日は触らないでOK。

  1. 「08_20260528」フォルダをダブルクリックで開く
  2. 「新規」「その他」「Google Apps Script」 をクリック
  3. ファイル名を 08_20260528_gas にする
ファイル名の変更方法

ファイル名の変更方法

手順4

「テスト用Docs」 を作る

「08_20260528」 フォルダの中に、「テスト用Docs」という名前でGoogleドキュメントを1つ作成してください
(中身は空でOK)。

  1. 「08_20260528」 フォルダを開く
  2. 「新規」「Google ドキュメント」 をクリック
  3. ファイル名を 「テスト用Docs」 に変更
  4. (自由に1〜2行、 本文に文字を入れてもOK)
確認

準備の完成形 — 「08_20260528」 を開いてこうなっていればOK

Drive で 「08_20260528」 を開くと、 こんな見た目になっているはず。 違っていたらここで直しておきましょう。

マイドライブ 2026アルゴリズム概論 08_20260528
名前 ↑
08_20260528_gas
テスト用Docs

この 2つのファイル が入っていれば、 今日の本題に入れます!

Google Apps Scriptとは

Phase2

Phase2

Phase1

Webアプリ

HTML / CSS / JavaScript

Phase2

Google系を使った自動化

Drive / スプレッドシート / Docs / Gmail

講義

GAS(Google Apps Script)とは

Googleアプリケーションを JavaScript で操作できる道具
  • 文法は前半で書いてきた JavaScript とほぼ同じ
  • 操作する対象 — ブラウザの部品 → Driveの中のファイル
  • 使用する言葉が違うところはあるがノリは同じ!

画面構成

まずは画面構成の確認から

準備

GASエディタの構成

まずは準備運動

シンプルな操作をしてみよう

準備運動

準備運動1 — Docsを 「複製してみる」

先ほど作った 「テスト用Docs」 を、 GASを使って 複製 してみまましょう

Before — 実行する前

08_20260528
GAS

08_20260528_gas

テスト用Docs

After — 実行したあと

08_20260528
GAS

08_20260528_gas

テスト用Docs

NEW

テスト用Docs のコピー

先に整理

コンピューターへの指示を日本語で考える

Phase1 と同じく、コンピューターへの指示を Where / What / How で言葉にしましょう。

テスト用Docs を、 元と同じフォルダに複製する
何を (What) どこに (Where) どうする (How)

Where(どこに) は今回 省略 しても大丈夫です。 省略時は、元のファイルと同じフォルダに自動で置かれます。

準備運動

GAS に翻訳

DriveApp.getFileById('テスト用DocsのID')

テスト用Docs を

.
makeCopy()

複製する

IDをコピーしたら、「テスト用DocsのID」の部分をコピーしたIDに置き換えましょう!

準備運動

翻訳内容をエディタに書く

翻訳内容をGASエディタにある myFunction の中に書きましょう。ここに書いた内容がそのままコンピューターへの指示として伝わります。

function myFunction() {
  DriveApp.getFileById('テスト用DocsのID').makeCopy();
}

コード中の テスト用DocsのID の部分を コピーしたDocsのIDに置き換えましょう!

準備運動

「▶ 実行」 ボタンを押す

コンピューターに指示をしたいときは、 GASエディタ上部のツールバーにある 「▶ 実行」 ボタンを押します。初回実行時だけ 「権限の確認画面」 が表示されます。次のスライドで詳しく説明します。

その前に必ず保存! — コードを書き換えたら、 まず Cmd + S (Mac) / Ctrl + S (Win) で保存してください。 保存し忘れると 古いコードのまま実行 されることがあります。
GASエディタの実行ボタン
権限承認

「権限の確認画面」 が出ます (初回のみ)

GAS を使ってコンピューターに指示をするとき、初回に限り、 Google が 「このプログラムにあなたの Drive を触らせていいですか?」 と確認してきます。 これは大事なセキュリティの仕組みです。 「権限を確認」 をクリックして進みます。

権限の確認ダイアログ (承認が必要)

なぜこの確認が必要?

悪意のあるプログラムにうっかり権限を渡すと、 自分の Drive のファイルを勝手に削除されたり、 Gmail からメールを勝手に送信されたりする可能性があるから。

権限承認

権限の確認画面の手順 (1/2)

アカウント選択画面

1. 自分の Googleアカウント を選ぶ

「詳細」 をクリック

2. 「Google で確認されていません」 → 左下の「詳細」を選択

「安全ではないページに移動」 をクリック

3.「(安全ではないページ) に移動」をクリック

権限承認

権限の確認画面の手順 (2/2)

「すべて選択」 + 「許可」 の権限確認画面

4. 「すべて選択」 にチェック (出る場合のみ)

5. 一番下までスクロール → 「許可」 をクリック

「安全ではない」 と表示されますが、 自分のアカウントで作った自分のコード なので大丈夫です。 1度承認すれば、 次回以降はこの画面は出ません

準備運動

動作確認 — 指示が伝わりましたか?

承認が終わると、 myFunctionの中に書いた指示が実行されます。 Drive の 08_20260528 フォルダを開いて、変化を確認してみましょう。

「テスト用Docs のコピー」 が新しく入っていれば 大成功

動かなかった場合は、 ID の置き換え漏れや、 GASエディタの赤字のエラー文を確認してみてください。 困ったらチューターや講師に声をかけてください。

準備運動

準備運動2 — ファイル名を変える

さっき準備運動1で複製した 「テスト用Docs のコピー」 を、GAS で「電波電波の怪電波」名前変更 してみましょう。
※ 元の「テスト用Docs」 は触りません。

Before — 実行する前

08_20260528

テスト用Docs のコピー

After — 実行したあと

08_20260528
名前変更

電波電波の怪電波

先に整理

コンピューターへの指示を日本語で考える

準備運動1と同じく、 やりたいことを日本語で言葉にしてから翻訳に入ります。

テスト用Docs のコピー の名前を 「電波電波の怪電波」 に変える
何を (What) どんな名前に どうする (How)
準備運動

GAS に翻訳

DriveApp.getFileById('コピーのID')

テスト用Docs のコピー を

.
setName('電波電波の怪電波')

名前を変える

今回は 「テスト用Docs のコピー」 の ID をコピーして、「コピーのID」の部分に置き換えましょう!

準備運動

翻訳内容をエディタに書く

準備運動1で書いたmakeCopyの行は コメントアウト で残して (記録として)、 その下に今回の setName の行を 追加 しましょう。

コメントアウト = 行の先頭に // をつけること。 これでその行は実行されず、 メモ扱いになります。 ※ コメントアウトをしないと、 後で const file などが重複して エラー が出るので注意。
function myFunction() {
  // 準備運動1(記録として残す)
  // DriveApp.getFileById('テスト用DocsのID').makeCopy();

  // 準備運動2
  DriveApp.getFileById('コピーのID').setName('電波電波の怪電波');
}

コピーのID の部分を 「テスト用Docs のコピー」 から取ったID に置き換えましょう!

準備運動

「▶ 実行」 ボタンを押す

準備運動1 と同じく、 GASエディタ上部の 「▶ 実行」 ボタンを押しましょう。

「テスト用Docs のコピー」のファイル名が「電波電波の怪電波」に変わっていれば成功!
GASエディタの実行ボタン

権限の承認画面は 1度承認済み なので、もう出ません。

準備運動

準備運動3 — テスト用Docs を 「別フォルダに移す」

「テスト用Docs」 を 別のフォルダ (backup_test)移動 させてみます。

Before — 実行する前

08_20260528

テスト用Docs

backup_test
(空)

After — 実行したあと

08_20260528
(空)
backup_test
移動

テスト用Docs

「08_20260528」フォルダの中に、「backup_test」という名前で新しいフォルダを作っておいてください。これが移動先になります。(右クリック→新しいフォルダ、で作成可能)

先に整理

コンピューターへの指示を日本語で考える

これまでと同じく、 やりたいことを日本語で言葉にしてから翻訳に入ります。

テスト用Docs を、 backup_test フォルダに移す
何を (What) どこに (Where) どうする (How)
準備運動

GAS に翻訳 — ただし長くて読みづらい...

DriveApp.getFileById('テスト用DocsのID')

テスト用Docs を

.
moveTo

移す

(
DriveApp.getFolderById('backup_testのID')

backup_test フォルダに

)

動きはしますが、 1行が長くて カッコの中にまたカッコ が入っていて、 どこで何をしているのか追いづらいですね。 さっきと同じく、 変数で分ける 出番です。

準備運動

変数を活用

const file = DriveApp.getFileById('テスト用DocsのID');
const folder = DriveApp.getFolderById('backup_testのID');
file.moveTo(folder);
  • 1行目 — テスト用Docs を file という名前で 記憶
  • 2行目 — backup_test フォルダを folder という名前で 記憶
  • 3行目 — filefolder に 「移して」 とお願い
準備運動

翻訳内容をエディタに書く

今までのコードは コメントアウト で残しておいて、 その下に今回の 3行を追加 しましょう。

function myFunction() {
  // 準備運動2までのコード(記録として残す)
  // const file = DriveApp.getFileById('コピーのID');
  // file.makeCopy();
  // file.setName('電波電波の怪電波');

  // 準備運動3
  const file = DriveApp.getFileById('テスト用DocsのID');
  const folder = DriveApp.getFolderById('backup_testのID');
  file.moveTo(folder);
}

backup_testのID の部分を 「backup_test」 フォルダから取ったID に置き換えましょう!

準備運動

「▶ 実行」 ボタンを押す

準備運動1・2 と同じく、 GASエディタ上部の 「▶ 実行」 ボタンを押しましょう。

「テスト用Docs」が08_20260528から消えて、backup_testの中に移動していれば成功!
GASエディタの実行ボタン
準備運動

準備運動4 — ファイル名に日付をつけて複製したい

ファイルを複製するときに、ファイル名にその日の日付を入れて複製できるようにしましょう。

2026-05-28_テスト用Docs
先に整理

コンピューターへの指示を日本語で考える

同じく、 やりたいことを日本語で言葉にしてから翻訳に入ります。

テスト用Docs を、 今日の日付つきの名前 で、 複製する
何を (What) どんな名前で どうする (How)

次のスライドから、 「どんな名前で」 の部分を どう書くか を見ていきます。

準備運動

GASに翻訳 — makeCopy に「名前」を渡す

DriveApp.getFileById('テスト用DocsのID')

テスト用Docs を

.
makeCopy('複製したファイルの名前')

この名前で複製する

makeCopy のカッコの中に '名前' を入れると、 その名前で複製 してくれます。
この「カッコの中に渡すもの」 を 「引数 (ひきすう)」 と言います。

この引数に 今日の日付つきの名前 を入れるための方法を次から見ていきます。

準備運動

道具 — 今の日時をチェックする (new Date)

const today = new Date();
console.log(today);
何が起きる?
今の日時が以下のような形式で使えるようになります
Thu May 28 2026 10:23:45 GMT+0900

ただ、 このままだとファイル名に使うには 長すぎますので、次の道具で短く整えます。

準備運動

道具 — 日付を文字列に整える (Utilities.formatDate)

const today = new Date();
const dateStr = Utilities.formatDate(today, 'JST', 'yyyy-MM-dd');
console.log(dateStr);
何が起きる?
2026-05-28のように、シンプルな形式で日時データが使えるようになります

'yyyy-MM-dd' の部分が 形式の指定yyyy=年4桁、 MM=月2桁、 dd=日2桁。

準備運動

全部つなぐ — 「日付つきの名前で複製」

const file = DriveApp.getFileById('テスト用DocsのID');
const today = new Date();
const dateStr = Utilities.formatDate(today, 'JST', 'yyyy-MM-dd');
file.makeCopy(dateStr + '_テスト用Docs');
  • 1行目 — テスト用Docs を file という名前で記憶
  • 2行目 — 今の日時を today という名前で記憶
  • 3行目 — today を 「yyyy-MM-dd」 形の文字列に整えて dateStr に記憶
  • 4行目 — file「dateStr + '_テスト用Docs'」 という名前で複製
準備運動

翻訳内容をエディタに書く

今までのコードは コメントアウト で残しておいて、 その下に今回の 4行を追加 しましょう。

function myFunction() {
  // 準備運動3までのコード(記録として残す)
  // const file = DriveApp.getFileById('テスト用DocsのID');
  // const folder = DriveApp.getFolderById('backup_testのID');
  // file.moveTo(folder);

  // 準備運動4
  const file = DriveApp.getFileById('テスト用DocsのID');
  const today = new Date();
  const dateStr = Utilities.formatDate(today, 'JST', 'yyyy-MM-dd');
  file.makeCopy(dateStr + '_テスト用Docs');
}
準備運動

「▶ 実行」 ボタンを押す

準備運動1〜3 と同じく、 GASエディタ上部の 「▶ 実行」 ボタンを押しましょう。

「2026-05-28_テスト用Docs」 のような 日付つきの名前のファイル が新しく生まれていれば成功!
GASエディタの実行ボタン

ワーク

整理

ワーク前の整理 — テスト用Docs を 08_20260528 に戻す

準備運動の間に テスト用Docs は backup_test フォルダに移動 しています。 ワークに集中するために、 元の 08_20260528 フォルダに 戻しておきましょう。

  1. Drive で backup_test フォルダを開く
  2. 「テスト用Docs」 を 08_20260528 フォルダに ドラッグして戻す
お題

今日のお題 — 毎日 「今日の状態」 をバックアップする仕組み

Google Docs には便利な 履歴機能 があります。 ただし一度過去のバージョンに戻すと、 それが最新 になり、 その先に書き足した内容は 消えます

たとえば 「テスト用Docs」 を 自分の卒論原稿 だと思ってください。 ある日 「3日前の構成の方が良かった」 と戻したら、 その3日分の編集が全部消える

そうならないように、 毎日 「今日の状態」
別ファイルとしてバックアップに残す仕組み を作りましょう。
お題

バックアップのルールは自分で考えてみましょう

どんなバックアップの方法なら、 自分にとってやりやすいでしょうか?
自分なりに考えてみましょう。

  1. バックアップは どこに置く? (新しいフォルダを作る? 既存の backup_test を使う?)
  2. ファイル名は どうつける? (日付はどんな形? 「卒論_2026-05-28」? 「2026-05-28_卒論」?)
  3. 同じ日に何回も実行したらどうなる? (それでもいい? それとも上書き?)

正解は1つではありません。 ただし 順番が大事 。 順番を間違えると違う結果になります。

振り返り

準備運動でこれだけ触りました

お題を解くのに必要な道具は、 もうだいたい揃っています。

  • DriveApp.getFileById('...') — ファイルを持ってくる
  • DriveApp.getFolderById('...') — フォルダを持ってくる
  • file.makeCopy() — ファイルを複製する('名前' を渡せば、 その名前で複製)
  • file.setName('...') — ファイル名を変える
  • file.moveTo(folder) — ファイルを別のフォルダに移す
  • new Date() — 今の日時を作る
  • Utilities.formatDate(today, 'JST', 'yyyy-MM-dd') — 日付を文字列に整える
  • const file = ... — 持ってきたものを記憶しておく(変数)

これらを 順番に並べて組み合わせる と、 今日のお題が解けます。

ワーク

ワークの進め方

5人1組のグループ に分かれて、 Notion ページ (ここをクリックして開いて自分のページに移動してね) に沿って 日本語で指示書 → GAS実装 → (余裕があれば) 応用編 の順で進めましょう!

15分

個人作業

Step1 — 日本語で指示書

30分

チューター 1巡目

指示書チェック

30分

チューター 2巡目

実装相談・チェック

15分

提出

共有URL発行

チューターさん

各グループを 2巡。 1巡目は指示書、 2巡目はコードを見てくれる

小菅

常に色々回って合間を埋める。 詰まったら声かけてOK

基礎編は必須。 応用編はできた分だけ評価します (やれたらぜひ)。

実装について

指示をGoogle Apps Scriptに翻訳する

個人作業

指示書に書いた手順を翻訳する

Google Apps Scriptの道具を1個ずつ触った経験と、先ほどワークで行った指示書の手順を見ながら、 バックアップシステムを作るためのGoogle Apps Scriptを組み立ててください。

  • 今まで学んだ道具を使えばできます!
  • 1個書いたら 「▶ 実行」 ボタンを押して、 動きを見たりGoogle Driveの中身を見に行って都度経過を確認しましょう!
大事なこと

AI相談について — 今日は控えめに

今日は、 AI相談を積極的には推奨しません

理由

自分が触った道具を、 自分の言葉で組み立てる経験 そのものが大事だから。

ただし、 完全に禁止ではありません。 詰まったときの参考、 エラーの読み方 を聞く、 くらいは構いません。

応用編

次回までの課題 — 早く終わった人は授業内で着手OK

お題

応用編のお題 — バックアップに「履歴」 を残す

基礎編で「日付つきの名前で複製」 まで作りました。 でも、 こんな悩みが残ります。

Drive にバックアップは溜まるけれど、 後から振り返ったときに 「いつ、 何を変えたか」 がわからない

これを解決するために、 バックアップを取るたびに 「いつ、 何を変えたか」 を記録する仕組みを作ってみましょう。バックアップのルールは自分で考えてみてください!

事前準備

応用編・事前準備 — 「バックアップ履歴」 シートを作る

「08_20260528」 フォルダの中に、 「バックアップ履歴」 という名前で新しい Google スプレッドシートを作ってください!このシートを使うといいかも?

  1. 「08_20260528」 を開く → 「新規」 → 「Google スプレッドシート」
  2. ファイル名を 「バックアップ履歴」 に変更
  3. URLからスプレッドシートの ID をコピーしておく
事前準備

応用編・事前準備 — GASファイルを新しく増やす

応用編は、 基礎編で書いたコードを 壊さずに残したまま 進めたいので、 同じGASプロジェクトの中に 新しいファイルを追加 して、 そこに書いていきます。

  1. GASエディタの左側「ファイル」の右にある「+」 をクリック
  2. 「スクリプト」 を選ぶ
  3. 新しく増えたファイルの名前をgas_new.gs にする

⚠️ 関数名の衝突に注意

gas_new.gs を作ると function myFunction() が自動で入ります。 そのまま使うと コード.gs の myFunction と衝突 して、 どちらかが実行されなくなります。 必ず 別の関数名 (例: backupWithLog) に書き換えてください。
道具A

操作対象スプレッドシートを指定 — SpreadsheetApp.openById

準備運動の DriveApp.getFileById と同じ方向性。 IDを指定してスプレッドシートを持ってきます。こうすることで、指定したスプレッドシートに書き込みなどができるようになります。

const sheet = SpreadsheetApp.openById('バックアップ履歴のID');
シートを指定したらどう使う? — 上の事例の場合、sheetという名前を使って、書き込みなどができるようになります!
道具B

行を1つ追加する — sheet.appendRow

スプレッドシートの一番下に、 1行追加する道具。 配列 [値1, 値2, 値3] を渡すと、 左から順にセルに入ります。

const sheet = SpreadsheetApp.openById('バックアップ履歴のID');
sheet.appendRow(['2026-05-28', 'テスト用Docs', 'お試しで書いてみた']);
実行ボタンを押すと何が起きる?
— 「バックアップ履歴」 を開くと、 一番下に 新しい1行が増えている
道具C

入力欄でメモを取る — Browser.inputBox

画面の上に 入力欄 を出して、 入力された文字列を受け取る道具です。

const message = Browser.inputBox('この変更で何をした?');
console.log(message);
実行ボタンを押すと何が起きる? — 入力欄が出てきて、 入力した文字列が message に入って、 実行ログに表示される
取り組み方

組み立て方の進め方

今出てきた道具を3つ組み合わせて、応用編の内容に挑戦してみましょう!

  1. まず 日本語で処理順 を書き出してみましょう
    (例 — 「複製する → メモを入力させる → 履歴に1行追加する」 など)
  2. 1行ずつ 今日の道具に翻訳 していきましょう
  3. 実行ボタンを押して動かして確認 — シートの変化を確認しましょう
AI相談OK ですが、 ただし丸投げにせず自分でも考えてみてください。 ファイルは gas_new.gsに書いて行きましょう! 基礎編を壊さずに進められます。 詰まったらチューターや講師に声をかけてください。

提出物について

次回までの課題と提出物

やること

やること

今日の提出対象は以下の通りです

  • 基礎編の内容のgasコードとNotionページの内容(提出方法は後述)
  • (できた方)応用編の内容のgasコードとNotionページの内容
提出方法

GASコードは — 「フォルダの共有URL」 で提出

共有URLを発行し、URLを課題提出フォームから提出してください。

手順

  1. Drive で 「08_20260528」 フォルダを右クリック → 「共有」「共有」
  2. 「一般的なアクセス」を「リンクを知っている全員」に変更
  3. 役割は 「閲覧者」 のままでOK
  4. 「リンクをコピー」 をクリックし提出

以上! おつかれさまでした!