【GAS】スプレッドシートに書き込み・読み取りできない時の対処法
GASを使って、スプレッドシートに書き込もうとしたけど、できない。。なぜ?
GASでスプレッドシートに書き込み、読み取りができない時があります。
今回はその時に考えられる原因とその対処法を解説していきます。
目次(クリックで読みたい部分にジャンプできます)
書き込み・読み取りのコードが間違っている
まず、GASの書き込み、読み取りのコードの記述が間違っている場合です。
書き込みと読み取りには、getValueメソッド、setValue() メソッドなどを用います。
それらの記述方法が間違っている場合だと書き込み・読み取りをすることができません。
その際は、実行ログにどんなエラーが出ているか確認するようにしましょう。
何かしらのエラーが出ている場合は、翻訳などを使っても、読んでみましょう。
または、コピペでグーグル先生に任せても可。何かしらの対処法が見つかるはずです。
合わせて読みたい
スプレッドシートの権限不足
スプレッドシートに対して権限が付与されていないと、書き込みや読み取りができない場合があります。
スプレッドシートには、編集権限や、閲覧権限があります。
スプレッドシートを開いて右上の「共有」から確認ができます。
編集者の場合は、「書き込み」と「読み取り」の両方が可能です。
閲覧者の場合は、「読み取り」のみができます。
GASを実行しようとしているアカウントに対して、権限が付与されているか確認してみましょう。
GASの認証エラー
GASを実行するときに認証エラーが出ている場合があります。
実行中のアカウントで認証エラーが出ていないか確認してみてください。
実行者が、Googleアカウントでログインしていることを確認して、GASに対してアクセス権限を持っているか確認してください。
アクセス権限を持っているかは、右上の「デプロイ」から確認することができます。
スプレッドシートの存在確認
GASで指定しているスプレッドシートが存在しているかも確認してください。
GASはURLやIDを指定することで、権限を持つほとんどのスプシにアクセスができます。
この場合、接続先のスプレッドシートがないということに気づきにくいです。
スプレッドシートが存在していません。というエラーが出るはずですので、確認してみましょう。
範囲の正確さ
値を書き込む時には、getRange() メソッドを使用する場合もあります。
getRange メソッドは「範囲」を指定するメソッドですが、範囲の指定が間違えている可能性もあります。
例えば、getRange(0 ,1)
など、存在しないセルを指定してしまう場合などです。
存在しないセルですので、もちろん読み取りや書き込みもできません。
直接0と書いてなくても、何も書いてないスプレッドシートに、getLastRow() を使うと、0が余裕で帰ってきます。
もしかしたら、設定しているかも知れないと確認してみましょう。
大量のデータを書き込もうとしていないか
最後に考えられるのが、大量のデータを書き込もうとしている場合です。
これは、書き込みの場合限定です。
セルの中に書き込める文字数には、制限があります。
1セル50000文字です。
APIのレスポンスなどで、50000文字を超えてしまう場合が考えられます。
50000文字を超えると書き込むことができなくなりますので、一度.length などで、文字数を調べてみて制限文字数を超えていないか確認してみましょう。
まとめ
今回は、GASで書き込み・読み取りができない時に考えられる原因を紹介していきました。
もし、こちらの記事が参考になれば幸いです。