GASで実現するSaaS有料版無料代替術

GASSaaS代替コスト削減
GASで実現するSaaS有料版無料代替術のサムネイル

GASで実現するSaaS有料版無料代替術

こんにちは、GASおじです。今日は中小企業の経営者やフリーランスの皆さんに向けて、「SaaSの有料版を使わずに、Google Apps Script(以下GAS)で代替する方法」をお話ししようと思います。SaaSの便利さは認めつつも、毎月の課金が積み重なると地味に痛いですよね。おじさんもそんな課金に厳しい一人です。

この記事では、既存の大切なデータはそのままに、新しい処理結果を日時付きの新規シートやファイルに書き出す安全なコード例を示しつつ、導入のハードルや注意点も解説します。GASはGoogleアカウントの利用枠内で追加の専用SaaS料金なし、ただしApps Scriptのquota・実行上限はありますから使い方には工夫が必要です。


SaaS有料版をGASで代替するメリットと注意点

SaaSの有料版を使うと、カスタマイズ不要ですぐ使えて便利ですが、月々のランニングコストがかかります。たとえば、あるSaaSの月額1万円を年間で支払うと12万円。これをGASで代替できれば、少なくともその12万円分は節約です。

ただし、GASには無料利用枠があり(一般ユーザーで1日あたりの実行時間は6分間など)、使い過ぎると制限にかかることがあります。大規模な処理や大量データの連続処理には向かないので、導入前に自社の業務量を把握しておきましょう。

また、GASでの処理はGoogleアカウントに紐づくため、個人情報や機密情報を扱う際は権限設定と取り扱いに注意が必要です。特に複数人で共有する場合は、スプレッドシートの共有設定やトリガー権限を管理しましょう。


具体例:フォーム入力データを日時付きシートに安全に書き出す

ここからは、実際にGASでSaaS代替の一例を見てみましょう。例えば、Googleフォームの回答をそのまま既存シートに追記すると何かのミスで消してしまう恐れがあります。そこで、新規に「YYYYMMDD_HHmmss」の日時付きシートを作り、そこにバッチで一括書き込みする方法です。

ポイントは、

  • 元データはそのまま保持(削除操作なし)
  • 入力検証で不正なデータは除外
  • まとめて書き込み(バッチ処理)で効率化
  • 書き込み前に元データを別シートにコピーしてバックアップ

以下がサンプルコードです。Googleフォームの回答が格納される「FormResponses」シートを想定しています。

function exportFormDataWithBackup() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const formSheet = ss.getSheetByName("FormResponses");
  if (!formSheet) {
    Logger.log("FormResponsesシートが見つかりません");
    return;
  }

  // 元データのバックアップ用シート名を作成
  const backupSheetName = "Backup_" + Utilities.formatDate(new Date(), ss.getSpreadsheetTimeZone(), "yyyyMMdd_HHmmss");
  const backupSheet = ss.insertSheet(backupSheetName);
  
  // 元データの範囲と値を取得
  const dataRange = formSheet.getDataRange();
  const values = dataRange.getValues();

  // バックアップに元データを丸ごとコピー
  backupSheet.getRange(1, 1, values.length, values[0].length).setValues(values);

  // 入力検証:2列目(例としてメールアドレス)が空の行は除外
  const filteredData = values.filter((row, index) => {
    if (index === 0) return true; // ヘッダーは残す
    return row[1] && row[1].toString().trim() !== "";
  });

  if (filteredData.length <= 1) {
    Logger.log("有効なデータがありません");
    return;
  }

  // 出力用の新規シート名(日時付き)
  const exportSheetName = "Export_" + Utilities.formatDate(new Date(), ss.getSpreadsheetTimeZone(), "yyyyMMdd_HHmmss");
  const exportSheet = ss.insertSheet(exportSheetName);

  // バッチで書き込み
  exportSheet.getRange(1, 1, filteredData.length, filteredData[0].length).setValues(filteredData);

  Logger.log("バックアップとエクスポートが完了しました。シート名: " + backupSheetName + " / " + exportSheetName);
}

このスクリプトは、

  1. 元データを新規のバックアップシートに丸ごとコピー
  2. 入力検証で無効データを除外
  3. 有効データを新しい日時付きシートに一括書き込み

という流れで、既存データの削除や上書きをしません。これで万一問題があってもバックアップから復元可能です。


初期設定と必要権限について

このスクリプトを使うには、

  • Googleスプレッドシートの編集権限
  • スクリプトエディタでの実行権限(初回実行時にGoogleアカウントの認証ダイアログが出ます)
  • installable trigger(定期実行する場合は別途設定)

が必要です。

installable triggerの設定例は、

  1. スクリプトエディタの「時計」アイコン(トリガー)をクリック
  2. 「トリガーを追加」から exportFormDataWithBackup を選択
  3. 実行タイミング(例えば毎日午前9時)を設定

こうすることで、毎日自動的にデータバックアップ&エクスポートができます。


個人情報の取り扱いと復元手順

この方法では個人情報も含むフォーム回答データを扱います。以下に注意してください。

  • スプレッドシートの共有設定は最小限のメンバーに限定
  • スクリプト実行権限も信頼できるユーザーだけに付与
  • バックアップシートは通常非表示にしておくのも手です(シートの非表示はUI操作で可能)

もし間違って新規シートのデータを消してしまった場合は、バックアップシートから対象範囲をコピーして復元してください。Googleスプレッドシートのバージョン履歴も活用できます。


コスト削減の仮定と計算例

仮にSaaSの有料プランが月額1万円とし、年間で12万円のコストがかかるとします。GASはGoogleアカウントの利用枠内で追加の専用SaaS料金なしなので、

年間コスト削減額 = SaaS月額料金 × 12ヶ月
                = 10,000円 × 12
                = 120,000円

ただし、GASの無料枠を超えるような大容量処理や複雑な自動化は別途GCP課金や外部サービス導入が必要になる場合もありますので、運用規模に応じてご検討ください。


まとめ

GASを上手に活用すれば、SaaS有料版の機能を代替してコストを抑えることが可能です。ただし、GASの実行制限や個人情報の取り扱いには十分注意し、必ずバックアップや入力検証を組み込んで安全運用を心がけましょう。

最後に、GASおじラボでは500種類以上の便利なGASツールをまとめて提供しています。業務効率化、コスト削減に役立てたい方はぜひメンバーシップもチェックしてみてください。

GASおじラボで500ツール使い放題 →