スプシの自動転記が止まったら シート名を確認する直し方

記事
IT・テクノロジー
昨日まで動いていたスプレッドシートの転記が、急に止まった。
「今月分のタブを作っただけなのに」「シートの名前を変えてから動かない」なら、まず確認したいのが、プログラムに書かれたシート名です。

この記事では、GAS(Google Apps Script)でシートが見つからなくなった場合の調べ方と、直す場所を紹介します。全部のコードを理解するところから始めなくても大丈夫です。

1 まずエラーの文と止まった場所を見る


同じ処理を何度も実行する前に、転記先に途中まで書き込まれていないか確認します。途中で止まった処理を繰り返すと、同じ行が二重に追加されることがあります。

対象のスプレッドシートで「拡張機能」から「Apps Script」を開き、左側の「実行数」で失敗した実行を選びます。エラー文と行番号を控えておきましょう。別に作成されたプログラムから動かしている場合は、そのプロジェクトを開いて確認します。

たとえば、次のようなエラーです。
Cannot read properties of null (reading 'getRange')

これは、getRange を呼び出そうとした対象が null になっているという手がかりです。セルが空という意味ではなく、この例ではシートを取得できていない状態です。この文だけで原因は決まりません。シート名の違いのほか、別のスプレッドシートを見ている可能性もあります。

2 タブの名前とコードを見比べる


次のような行を探します。
const sheet = ss.getSheetByName('売上');

この行は、ss が指すスプレッドシートの中から「売上」という名前のタブを探しています。画面左上のファイル名ではなく、下に並んでいるタブの名前です。

たとえば、タブを「売上」から「売上_10月」に変更していたら、コードは古い名前を探し続けます。getSheetByName は該当するシートがない場合に null を返すため、続く getRange で止まることがあります。

確認するのは、この3点です。
・タブ名と、引用符の中の名前が同じか
・名前の前後に空白が入っていないか
・半角と全角、大文字と小文字が違っていないか

まずは目で見比べるだけで大丈夫です。名前が同じなら、シート名以外の原因を調べます。エラーを消すためだけに、空の「売上」タブを作るのは避けましょう。必要なデータがないまま処理が進むおそれがあります。

3 直す前に戻せる状態を作る


元のスプレッドシートとコードを保存してから、検証用のコピーで修正します。元のコードはテキストとしても残しておくと、変更前後を見比べられます。

ここで注意です。ファイルをコピーしただけでは、本番から完全に切り離せないことがあります。コードに openById や openByUrl があると、コピー側から元のファイルを参照する場合があります。通知や外部への送信、別ファイルへの書き込みも、検証先へ分ける必要があります。

どこに書き込む処理か分からない場合は、コピーでも実行せず、名前の照合と変更箇所の確認までにしてください。

4 シート名が原因ならここを修正する


実際に転記に使うタブが「売上_10月」であると確認できたら、検証用コードの引用符の中を合わせます。

変更前
const sheet = ss.getSheetByName('売上');

変更後
const sheet = ss.getSheetByName('売上_10月');

引用符と括弧はそのままで、中の名前だけを変えます。ss という名前は説明用です。手元のコードでは別の変数名の場合がありますので、行全体を貼り替えず、該当する名前だけを直してください。

逆に、タブの名前を誤って変えただけなら、タブ名を元に戻す方法もあります。ただし、ほかの処理が新しい名前を使っていないか確認してから戻します。

毎月名前を変える運用なら、翌月も同じ問題が起きます。「入力用」のような固定名を使うか、年月に応じて参照先を選ぶ仕組みにするか、運用に合わせて見直すとよいでしょう。

5 見つからないときに止まる確認を加える


慣れてきたら、シートを探す行のすぐ後ろに、次の確認を入れる方法もあります。

const sheet = ss.getSheetByName('売上_10月');
if (sheet === null) {
  throw new Error('対象のシートが見つかりません。タブ名を確認してください。');
}

この例は「シートが見つからなければ、その場で止まる」ためのものです。転記処理そのものは含みません。既存コードの sheet と ss の名前に合わせ、同じ変数の宣言を二重に追加しないようにします。

実際の転記や削除が始まる前に確認を置くことが大切です。すでに書き込んだ内容を元に戻す機能ではありません。また、別のスプレッドシート内にある同名のタブを参照していても、この確認だけでは見抜けません。

6 エラーが消えた後は転記結果を確かめる


本番と分けた検証先で、まずは架空のデータ2~3行を使います。実行前の件数と、入るはずの値を控えてから、次を見比べましょう。

・正しいファイルとタブに入ったか
・必要な行が欠けていないか
・同じ行が重複していないか
・日付、商品番号、金額が元の値と合っているか
・元データや関係のないセルを変えていないか

編集やフォーム送信をきっかけに動く処理は、実行ボタンだけでは同じ条件を再現できない場合があります。検証先での動かし方が分からなければ、作成者に確認してください。

「実行完了」と表示されただけでは、正しく転記されたとは限りません。検証結果を確認してから、変更箇所だけを本番へ反映します。自動実行が動いている場合は、作成者と反映のタイミングを合わせてください。

名前が一致していた場合は


次に見るのは、参照しているファイル、実行する人の権限、自動実行の設定です。権限不足や処理時間の上限など、別のエラーなら確認先も変わります。この記事の修正を無理に当てはめず、表示されたエラーを起点に調べましょう。

まずは「タブの名前」と「コードの引用符の中」を見比べるところから。違いが見つかれば、直す場所をかなり絞れます!

自分で確認するのが難しいときは、ココナラ内のプロフィールからご相談いただけます。「いつから止まったか」「表示されたエラー」「直前に変えたこと」が分かると、状況を整理しやすくなります。画面を送る場合は、氏名・連絡先・顧客情報などを隠してください。

参考にした公式資料
Google Apps Script の Spreadsheet クラス、Logging、Troubleshooting、Container-bound Scripts の各公式ドキュメント。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す