【GAS初心者講座#1】はじめてのプログラム ー 変数・演算・データ型入門
GAS初学者向け:はじめてのプログラム - 変数・演算・データ型入門
こんにちは!ノンプロ研でGASコースのTAをしているTaroです。
今回は、GAS(Google Apps Script)の超基礎である「変数」「演算」「データ型」について、プログラミング未経験の方でも理解できるように丁寧に解説していきます。この記事は、ノンプロ研初心者講座【GASコース】第1回の内容をもとに作成しています。
この記事で学べること
GASの始め方と最初のプログラムの書き方
プログラミングの「箱」である変数と定数の使い方
データの種類(データ型)と計算(演算)の基本
最初に伝えたい大切なこと:
プログラミングは、最初は「なんだか難しそう...」と思うかもしれません。でも安心してください。今日学ぶ内容は、料理でいうと「材料の名前を覚える」「包丁の使い方を知る」といった基礎の基礎です。
この基礎さえ押さえれば、あとは組み合わせるだけ。今は完璧に理解できなくても、手を動かしながら少しずつ慣れていきましょう。
第1部:はじめてのGAS - 最初の一歩を踏み出そう
GASとは?なぜGASを学ぶの?
GAS(Google Apps Script)は、Googleが提供するプログラミング環境です。
GASの3つの魅力:
無料で始められる:Googleアカウントさえあれば、今すぐ始められます
環境構築不要:ブラウザだけでプログラミングできます(面倒なインストール作業は一切なし)
すぐに実務で使える:スプレッドシート、Gmail、カレンダーなど、普段使っているGoogleサービスを自動化できます
こんなことができるようになります:
スプレッドシートのデータを自動集計
毎日決まった時刻にメールを自動送信
Googleフォームの回答を自動で整理
カレンダーの予定を自動で管理
想像してみてください。毎日30分かかっていた作業が、ボタン一つで終わるようになったら...?
最初のプログラムを書いてみよう
では、実際にGASを動かしてみましょう!
ステップ1:スプレッドシートを作成
Googleドライブを開く
「新規」→「Googleスプレッドシート」をクリック
スプレッドシート名を「Hello GAS」に変更
ステップ2:スクリプトエディタを開く
スプレッドシートのメニューから「拡張機能」→「Apps Script」をクリック
※メニューに表示がない場合は「ツール」→「スクリプトエディタ」
新しいタブでスクリプトエディタが開きます
プロジェクト名を「Hello GAS」に変更
ステップ3:最初のコードを書く
スクリプトエディタに、以下のコードを入力してください:
function myFunction() {
console.log(123);
console.log('Hello GAS!');
}
ステップ4:保存して実行
保存:Ctrl + S(Mac: ⌘S)またはディスクアイコンをクリック
実行:「myFunction」を選択して「▷実行」をクリック
【重要】初回実行時の権限承認について
初めてスクリプトを実行するとき、「権限の確認」画面が表示されます。これは正常な動作です。慌てずに以下の手順で進めてください。
権限承認の手順(詳細版)
ステップ1:「承認が必要です」と表示される
画面に以下のようなダイアログが表示されます:
承認が必要です
このプロジェクトを続行するには承認が必要です
→ 「権限を確認」ボタンをクリック
ステップ2:Googleアカウントを選択
複数のGoogleアカウントでログインしている場合、どのアカウントで実行するか選択します。
→ スプレッドシートを作成したアカウントを選択
ステップ3:「安全ではないページ」の警告(重要!)
ここが最も混乱しやすいポイントです。以下のような画面が表示されることがあります:
このアプリは Google で確認されていません
このアプリは Google で確認されていないため、
Google アカウントに対してこのアプリへの
アクセスを許可しないでください
「えっ、危険なの!?」と思うかもしれませんが、大丈夫です。これはあなた自身が作ったプログラムです。
この警告が出る理由:
あなたのスクリプトは「まだGoogleの公式審査を受けていない」だけ
自分で作ったプログラムなので、安全性は自分で保証できる
Googleが「知らないプログラム」に慎重なのは、セキュリティ上正しい対応
対処法:
画面左下の「詳細」または「Advanced」をクリック
「Hello GAS(安全ではないページ)に移動」をクリック
または「Go to Hello GAS (unsafe)」をクリック
ステップ4:権限の内容を確認
以下のような権限を求められます:
Hello GAS が次の許可をリクエストしています:
・Google スプレッドシートのすべてのスプレッドシートの
表示、編集、作成、削除
・外部サービスへの接続
→ 内容を確認して「許可」ボタンをクリック
なぜこの権限が必要?
スプレッドシートを操作するため、スプレッドシートへのアクセス権限が必要
今後、外部のサービス(Gmail、カレンダーなど)と連携するため
「この権限、大丈夫なの?」 はい、大丈夫です。なぜなら:
これはあなた自身が書いたコード
あなた自身のスプレッドシートにしかアクセスしない
悪意のあるコードを書いていないなら、安全
よくある質問とトラブル
Q1:「このアプリは確認されていません」と出て、詳細ボタンが見つからない
A:画面をスクロールするか、ブラウザのズームを調整してみてください。「詳細」は小さいリンクで表示されていることがあります。
Q2:権限を許可したのに、また同じ画面が出る
A:以下を試してください:
ブラウザのキャッシュをクリア
シークレットモード/プライベートブラウズで試す
別のブラウザ(Chrome、Firefox、Edgeなど)で試す
Q3:権限承認をキャンセルしてしまった
A:問題ありません。もう一度「▷実行」をクリックすれば、再度権限承認画面が表示されます。
Q4:会社のアカウントで「管理者の承認が必要です」と出る
A:組織のGoogle Workspaceアカウントの場合、管理者の承認が必要な場合があります。その場合は:
個人のGoogleアカウントで試す
IT部門に相談する
管理者に承認をリクエストする
ステップ5:実行完了を確認
権限承認が完了すると、スクリプトが実行されます。
画面下の「実行ログ」タブをクリックして、結果を確認してください。
結果:
123
Hello GAS!
もし何も表示されない場合:
画面下部の「ログ」タブをクリック
または「表示」メニュー→「ログ」を選択
それでも表示されない場合は、もう一度「▷実行」をクリック
おめでとうございます!
あなたは今、人生で初めてのプログラムを実行しました!
そして、初心者最大の難関「権限承認」も無事クリアしました!
権限承認は最初の1回だけです。次回からは「▷実行」をクリックするだけで、すぐに実行できます。
コードの意味を理解しよう
さて、今書いたコードの意味を確認しましょう。
function myFunction() {
console.log(123);
console.log('Hello GAS!');
}
各パーツの役割:
1. function(ファンクション)
function myFunction() {
// ここに処理を書く
}
functionは、「一連の処理のまとまり」を定義するものです。料理でいう「レシピ」のようなものですね。
myFunction:この処理の名前(好きな名前を付けられます)
():パラメータを受け取る場所(今回は空)
{}:この中に実際の処理を書きます
なぜfunctionが必要?
プログラムは、functionという単位で実行されます。「この処理をまとめて実行してね」という指示を出すために、functionで囲む必要があるんです。
2. console.log()
console.log(123);
console.log('Hello GAS!');
console.log()は、「ログに出力する」命令です。プログラムが正しく動いているかを確認するための、最も基本的なツールです。
構文:
console.log(値1, 値2, 値3, ...);
複数の値をカンマで区切って出力できます:
console.log('Bob', 25, 'apple');
// 結果: Bob 25 apple
実務でどう使う?
プログラムのデバッグ(エラー探し)
処理の途中経過を確認
データの中身を確認
3. セミコロン(;)
console.log(123); // ← この「;」
JavaScriptでは、各行の終わりに**セミコロン(;)**を付けます。これは「この命令はここで終わりです」という合図です。
忘れても動くことが多いですが、付ける習慣を付けましょう。
4. 数値と文字列のリテラル
console.log(123); // 数値
console.log('Hello GAS!'); // 文字列
リテラルとは、プログラム中に直接書く値のことです。
数値:そのまま書く(例:123、3.14)
文字列:シングルクォート(')、ダブルクォート(")、バッククォート(`)で囲む
console.log(123); // 数値の123
console.log('123'); // 文字列の123
console.log("Hello World"); // 文字列
console.log(`こんにちは`); // 文字列
数値と文字列の違いは?
後で説明しますが、数値は計算ができて、文字列は連結ができます。この違いが重要になってきます。
コメントの書き方
プログラムには「コメント」を書くことができます。コメントは実行されない説明文で、自分や他の人が後で読んだときに理解しやすくするためのものです。
2つの書き方:
// この行はコメントです(一行コメント)
console.log(123); // 123と出力
/*
複数行に
わたるコメント
(ブロックコメント)
*/
console.log('Hello World'); /* Hello Worldと出力 */
ショートカット:
一行コメント:Ctrl + / (Mac: ⌘ + /)
ブロックコメント:Shift + Alt + A(Mac: Shift + Opt + A)
コメントの使い道:
コードの説明を書く
一時的にコードを無効化する(デバッグ時)
TODO(やるべきこと)を書く
入力補完を活用しよう
スクリプトエディタには、入力を助けてくれる「入力補完」機能があります。
使い方:
consと入力すると、候補が表示される
上下キーでconsoleを選択
EnterまたはTabキーで確定
.lと入力すると、logが候補に出る
EnterまたはTabキーで確定
この機能を使うと:
タイピング量が減る
スペルミスが防げる
使えるメソッド(命令)がわかる
最初は全部打ってもOKですが、慣れてきたら積極的に使いましょう。
プロジェクトの種類
GASには2種類のプロジェクトがあります。
1. コンテナバインドスクリプト
スプレッドシート、ドキュメント、フォームなどに紐付いて作成されるスクリプトです。
作り方:スプレッドシートなどから「拡張機能」→「Apps Script」
メリット:紐付いているファイルと簡単に連携できる
用途:特定のスプレッドシートを操作する、特定のフォームの回答を処理する
2. スタンドアロンスクリプト
スクリプト単体で作成されるプロジェクトです。
作り方:Apps Scriptダッシュボードから新規作成
メリット:どのファイルとも独立して動作できる
用途:複数のスプレッドシートを処理する、定期実行する
どっちを使えばいい?
最初はコンテナバインドスクリプトから始めるのがおすすめです。スプレッドシートとの連携がスムーズで、初心者に優しいです。
演習:他の環境でも試してみよう(演習1-01)
先ほどのmyFunctionと同じ処理を、以下の環境でも作成・実行してみましょう:
1. スタンドアロンスクリプトで作成
「新しいプロジェクト」をクリック
同じコードを書いて実行
2. Googleドキュメントから作成
Googleドキュメントを新規作成
「拡張機能」→「Apps Script」
同じコードを書いて実行
ポイント:
どの環境でも、GASの基本的な書き方は同じです。違うのは「どのサービスと連携するか」だけです。
第2部:変数と定数 - プログラムの「箱」を理解しよう
さて、ここからがプログラミングの本番です。「変数」と「定数」について学びます。
変数とは? - 値を入れる「箱」
変数とは、値を入れることができる箱のことです。
料理で例えるなら:
ボウル(箱)に、卵(値)を入れる
そのボウルに「卵ボウル」という名前を付ける
後で「卵ボウル」と呼べば、中の卵を取り出せる
プログラムでも同じです:
let x = 5;
これは「xという名前の箱に、5という値を入れる」という意味です。
なぜ変数が必要?
// 変数を使わない場合
console.log(2.5 * 2.5 * 3.14159); // 円の面積
console.log(2 * 3.14159 * 2.5); // 円の周囲
// 変数を使う場合
let r = 2.5;
let pi = 3.14159;
console.log(r * r * pi); // 円の面積
console.log(2 * pi * r); // 円の周囲
変数を使うと:
意味がわかりやすい:数字だけより、rやpiの方が何を表しているかわかりやすい
変更が楽:rの値を変えるだけで、全ての計算が更新される
再利用できる:同じ値を何度も使える
変数の宣言と代入
変数の宣言:
let 変数名; // 箱だけ用意
let 変数名 = 値; // 箱を用意して、同時に値を入れる
代入:
変数名 = 値; // 箱に値を入れる
実際に試してみよう(演習1-02):
function myFunction1_02() {
let num; // numという箱を用意
num = 123; // 箱に123を入れる
console.log(num); // 箱の中身を出力 → 123
let msg = 'Hello GAS!'; // 箱を用意して同時に値を入れる
console.log(msg); // 箱の中身を出力 → Hello GAS!
}
実行すると:
123
Hello GAS!
ポイント:
変数は「箱」なので、中身を確認したければ、箱の名前(変数名)を使います。
変数への代入は「上書き」
変数の重要な特徴:値を上書きできる
function myFunction1_03() {
let num;
num = 123;
num = num + 1; // 123に1を足して、numに上書き
console.log(num); // 124
let msg = 'Hello GAS!';
msg = 'Hello Apps Script!'; // 上書き
console.log(msg); // Hello Apps Script!
}
num = num + 1って何?
これは数学ではなく、プログラミングです:
右辺のnum + 1を計算(123 + 1 = 124)
その結果(124)を左辺のnumに代入(上書き)
右辺を先に計算して、その結果を左辺に入れる。これがプログラミングの「代入」です。
定数とは? - 上書き禁止の「箱」
定数は、上書きできない箱です。
const 定数名 = 値;
実際に試してみよう(演習1-04):
function myFunction1_04() {
const num = 123;
// num = num + 1; // ← これを実行するとエラー!
console.log(num);
const msg = 'Hello GAS!';
// msg = 'Hello Apps Script!'; // ← これもエラー!
console.log(msg);
}
コメントを外して実行すると、エラーメッセージが表示されます:
TypeError: Assignment to constant variable.
「定数には代入(上書き)できません」というエラーです。
変数(let)と定数(const)、どっちを使う?
判断基準は「再代入するかどうか」:
// 再代入する → let
let count = 0;
count = count + 1; // OK
count = count + 1; // OK
// 再代入しない → const
const taxRate = 0.1; // 消費税率
const pi = 3.14159; // 円周率
// taxRate = 0.08; // エラー!
基本戦略:
まずはconstで宣言する
後で「やっぱり変更したい」となったらletに変える
constを使う方が、「この値は変更されない」という意図が明確になり、バグが減ります。
実務での例:
const spreadsheetId = '12345...'; // スプレッドシートIDは変わらない → const
let currentRow = 1; // 処理中の行番号は変わる → let
変数名・定数名のルール
良い名前を付けることは、プログラミングで最も重要なスキルの一つです。
命名のルール:
基本的にアルファベットを使う
意味がわかりやすい名前にする
キャメルケースを使う(複数の単語を連結するとき、2語目以降の頭文字を大文字に)
// 良い例
const taxRate = 0.1;
const firstName = 'Taro';
const totalAmount = 1000;
// 悪い例
const a = 0.1; // 何を表すかわからない
const zeiritsu = 0.1; // ローマ字は避ける
const TaxRate = 0.1; // 最初の文字は小文字に
キャメルケースの例:
number // 1語 → そのまま
sheetTest // 2語 → 2語目の頭文字を大文字
taxRate // 2語 → 2語目の頭文字を大文字
totalPriceAmount // 3語 → 2語目以降の頭文字を大文字
なぜ良い名前が大事?
1週間後、あなたは自分が書いたコードを忘れています。そのとき、aとtaxRate、どちらが意味を思い出しやすいですか?
第3部:データ型と演算 - 値の種類と計算を学ぼう
プログラムは、色々な「種類」のデータを扱います。これを「データ型」といいます。
JavaScriptの主なデータ型
1. Number(数値型)
123 // 整数
3.14 // 小数
-10 // 負の数
2. String(文字列型)
'Hello' // シングルクォート
"World" // ダブルクォート
`こんにちは` // バッククォート
3. Boolean(ブール型)
true // 真
false // 偽
4. Object(オブジェクト型)
{} // オブジェクト(次回以降で詳しく)
5. null / undefined
null // 値がない
undefined // 値が定義されていない
データ型を調べる:typeof
構文:
typeof 値
実際に試してみよう(演習1-05):
function myFunction1_05() {
console.log(typeof 123); // number
console.log(typeof "hoge"); // string
console.log(typeof false); // boolean
console.log(typeof {}); // object
}
結果:
number
string
boolean
object
なぜデータ型が大事?
データ型によって、できる操作が違います。数値は計算ができますが、文字列は計算できません。文字列は連結できますが、数値は連結できません。
数値の演算
数値型のデータには、色々な計算ができます。
算術演算子:
x + y // 足し算
x - y // 引き算
x * y // 掛け算
x / y // 割り算
x % y // 余り(xをyで割った余り)
x ** y // 累乗(xのy乗)
実際に試してみよう(演習1-06):
function myFunction1_06() {
const x = 5;
const y = 3;
console.log(x + y); // 8
console.log(x - y); // 2
console.log(x * y); // 15
console.log(x / y); // 1.6666...
console.log(x % y); // 2(5を3で割った余り)
console.log(x ** y); // 125(5の3乗)
}
余り(%)って何に使うの?
偶数・奇数の判定(x % 2 === 0なら偶数)
一定の周期で処理を実行(i % 10 === 0なら10回に1回)
配列のインデックスを循環させる
後で「あ、ここで使えるな」と気づく瞬間が来るはずです。
文字列の連結
文字列型のデータは、連結ができます。
構文:
文字列1 + 文字列2
実際に試してみよう(演習1-07):
function myFunction1_07() {
const firstName = 'Taro';
const lastName = 'Yamada';
console.log(lastName + ' ' + firstName); // Yamada Taro
console.log(lastName + '\n' + firstName); // 改行あり
}
結果:
Yamada Taro
Yamada
Taro
エスケープシーケンス:
特殊な文字を表現するための記法です。
\n // 改行
\t // タブ
\' // シングルクォート
\" // ダブルクォート
\\ // バックスラッシュ
使用例:
console.log('Taro\'s pen'); // Taro's pen
console.log('Line1\nLine2'); // 改行して2行
テンプレート文字列:もっと便利な文字列の書き方
構文:
`文字列1 ${式} 文字列2`
バッククォート()で囲んだ文字列の中に、${}`で式を埋め込めます。
実際に試してみよう(演習1-08):
function myFunction1_08() {
const firstName = 'Taro';
const lastName = 'Yamada';
// 従来の方法
console.log('姓:' + lastName + ' 名:' + firstName);
// テンプレート文字列
console.log(`姓:${lastName} 名:${firstName}`);
// 複数行もそのまま書ける
console.log(`姓:${lastName}
名:${firstName}`);
}
結果:
姓:Yamada 名:Taro
姓:Yamada 名:Taro
姓:Yamada
名:Taro
テンプレート文字列の3つのメリット:
読みやすい:+で連結するより、見た目がスッキリ
式を埋め込める:${x + y}のように、計算結果も埋め込める
複数行が楽:改行をそのまま書ける
実務での使用例:
const name = 'Taro';
const age = 25;
const message = `
${name}様
お世話になっております。
あなたは現在${age}歳です。
よろしくお願いいたします。
`;
console.log(message);
これからは、文字列を組み立てるときはテンプレート文字列を使いましょう!
演習問題にチャレンジ
演習1-09:改行を使ったメッセージ
以下のようなメッセージをログ出力してみましょう:
○○様
お世話になっております。
よろしくお願いいたします。
高橋
ヒント:
\nで改行
またはテンプレート文字列で複数行
解答例:
function myFunction1_09() {
const name = '山田';
console.log(`${name}様\n\nお世話になっております。\nよろしくお願いいたします。\n\n高橋`);
}
演習1-10:長方形の面積
整数を代入した定数x, yを使って長方形の面積を求め、「縦は●●cm、横は××cm、面積は△△平方cmです。」とログ出力してください。
解答例:
function myFunction1_10() {
const x = 5;
const y = 3;
const area = x * y;
console.log(`縦は${x}cm、横は${y}cm、面積は${area}平方cmです。`);
}
演習1-11:余りの計算
整数を代入した定数x, yについて、xをyで割ったときの余りを求めて、「●●を××で割ったときの余りは△△です。」とログ出力してください。
解答例:
function myFunction1_11() {
const x = 10;
const y = 3;
const remainder = x % y;
console.log(`${x}を${y}で割ったときの余りは${remainder}です。`);
}
ブール型とtrue/false
**ブール型(Boolean)**は、**真(true)か偽(false)**の二者択一の状態を表すデータ型です。
例:
10 < 100 // true(10は100より小さい)
10 > 100 // false(10は100より大きくない)
'日本の通貨は円である' // これは文字列
日本の通貨は円である // 概念としてはtrue
ブール型は、次回学ぶ「条件分岐」で大活躍します。「もし○○がtrueなら△△する」という処理ができるようになります。
実務での使用例(次回以降で詳しく):
const isCompleted = true; // タスクが完了したかどうか
const hasError = false; // エラーがあるかどうか
if (isCompleted) {
// 完了メールを送る
}
nullとundefined
nullとundefinedは、どちらも「値がない」ことを表しますが、微妙に違います。
null:「意図的に値がない」ことを表す
undefined:「値が定義されていない」ことを表す
let x; // 変数を宣言しただけ
console.log(x); // undefined(値が入っていない)
let y = null; // 意図的に「値なし」を代入
console.log(y); // null
今は「そういうものがあるんだな」程度の理解でOKです。エラーメッセージに出てきたときに「あ、これか」と思い出せれば十分です。
まとめ:今日学んだこと
第1部:はじめてのGAS
GASは無料で、環境構築不要で、すぐに実務で使える
スクリプトエディタでコードを書き、実行する
functionで処理をまとめ、console.log()で出力を確認
第2部:変数と定数
変数(let):値を入れる箱、上書きできる
定数(const):値を入れる箱、上書きできない
再代入しないならconst、再代入するならlet
第3部:データ型と演算
Number(数値)、String(文字列)、Boolean(真偽値)
数値は計算、文字列は連結
テンプレート文字列(`)で見やすいコード
発展:将来できるようになること
今日学んだ基礎知識を使うと、こんなことができるようになります:
実務自動化の例
1. データの自動計算
// スプレッドシートから売上データを取得
const sales = 100000;
const taxRate = 0.1;
const totalAmount = sales * (1 + taxRate);
// 結果をスプレッドシートに書き込む
console.log(`税込金額: ${totalAmount}円`);
2. 動的なメッセージ生成
const name = 'Taro';
const point = 1500;
const nextLevel = 2000;
const remaining = nextLevel - point;
const message = `
${name}様
現在のポイント: ${point}pt
次のレベルまで: あと${remaining}pt
`;
// このメッセージをメールで送信(次回以降で学習)
3. 日付・時刻の計算
const today = new Date();
const deadlineDays = 7;
const deadline = today.getDate() + deadlineDays;
console.log(`締切は${deadline}日です`);
今は難しく感じてもOK!
これらの例には、まだ習っていない知識も含まれています。でも、今日学んだ「変数」「演算」「文字列の連結」が核になっているんです。
次回以降、少しずつ新しい知識を積み重ねていけば、必ずこういうツールが作れるようになります。
学習のコツ
1. 完璧を目指さない
最初から全部理解しようとしなくてOK。まずは手を動かして、何度も書いているうちに自然と身につきます。
2. エラーを恐れない
エラーは「何かを学ぶチャンス」です。エラーメッセージを読んで、何が間違っているか考えてみましょう。
3. 小さく試す
一度に大きなプログラムを書こうとせず、1行ずつ試しながら進めましょう。
4. 写経する
最初は例題をそのまま写すだけでOK。写しながら「この部分はこういう意味だな」と考えることが大事です。
5. 遊んでみる
変数の値を変えてみる、文字列を変えてみる。「これを変えたらどうなるかな?」と試してみましょう。
次回予告
次回は「制御構文」について学びます。
条件分岐:「もし○○なら△△する」という判断をプログラムに任せる
繰り返し:「これを100回繰り返す」という処理を自動化する
今日学んだ変数や演算と組み合わせると、プログラムが一気に「実用的」になります。
例えば:
スプレッドシートの全行をチェックして、条件に合うものだけ処理
1から100まで足し算
データを自動で分類
楽しみにしていてください!
プログラミング8つの約束
最後に、このコースで大切にしている「プログラミング8つの約束」を紹介します。
実務で使う:学んだことは、仕事で実際に使ってみる
習慣化する:毎日少しずつでもコードを書く
構文どおりに書く:正しい書き方を身につける
調べて、頼る:わからないことはGoogle検索、ChatGPT、Claudeを活用
打ってはいけない:コピペより、自分で打つ方が身につく
構造化データを使う:整理されたデータで作業効率アップ
読みやすいコードを書く:他の人(未来の自分)が読めるコード
アウトプット:学んだことをブログやSNSで発信
この約束を守りながら学習を進めていきましょう!
最後に
GASの第一歩、お疲れさまでした!
今日学んだ内容は、プログラミングの基礎の基礎です。料理でいう「包丁の使い方」や「火の通し方」のようなものですね。
最初は「こんな基礎を学んで何になるの?」と思うかもしれません。でも、この基礎があるからこそ、次のステップに進めるんです。
あなたは今日、人生で初めてのプログラムを実行しました。変数を使って値を保存しました。計算もできるようになりました。
これらの小さな一歩が、やがて「スプレッドシートの作業を自動化する」「毎日のメール送信を自動化する」といった大きな成果につながります。
焦らず、一歩ずつ進んでいきましょう。次回の「制御構文」で、あなたのプログラムはさらに実用的になります。
一緒に頑張りましょう!
ハッシュタグ:#ノンプロ研 #GAS初心者講座
質問や感想は、ノンプロ研のSlackやXでシェアしてくださいね!
