LoginSignup
HARUNA3
@HARUNA3

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

GAS 'getLastRow' of null というエラーについて

解決したいこと

GASを利用し、googleformから送られてきた値を元に見積書を自動で作るプログラムを作っております。

GAS初学者でして、 下記の通りエラーが出てしまって解決方法が分からずご質問をさせて頂きました。

発生している問題・エラー

TypeError: Cannot read property 'getLastRow' of null
CreateQuotationByForm   @ コード.gs:10

該当するソースコード

var hoge
var FolderId = hoge
var mailaddress = hoge
var stname = "https://フォームと連動しているスプレッドシートのURLを記入"

function CreateQuotationByForm() {
  var myForm = SpreadsheetApp.getActiveSpreadsheet();
  var stForm = myForm.getSheetByName('stname');
  var maxRow = stForm.getLastRow();

  var option = stForm.getRange(maxRow, 14).getValue();
  var company = stForm.getRange(maxRow, 15).getValue();
  var name = stForm.getRange(maxRow, 16).getValue();
  var mail = stForm.getRange(maxRow, 17).getValue();
  var phoneNumber = stForm.getRange(maxRow, 18).getValue();

問題の箇所

var stForm = myForm.getSheetByName('stname');

自分で試したこと

  • 恐らく、そもそもシートが読み込めておらずnullになってしまっているため getSheetByNameでの指定しているシート名が異なっているのではないかと思い、確認をしました。
    → google formと連動したスプレッドシートである事を確認し、URLを記入した。

  • nameを指定する際にクォーテーションが必要かと思い、''を追記してみた。

ご教示下さい

シートの指定方法や、エラーの解消に向けてやるべき事などがありましたら教えて頂けますと幸いです。
ご質問をしながら解決方法を探してみますので、わかりましたらご報告をさせて頂きます。

0

2Answer

This answer has been deleted for violation of our Terms of Service.

getSheetByName()はシートの名前から取得するものなので、URLから取得するならopenByUrl()ですね。また、openByUrl()はスプレッドシートそのものを取得するメソッドなので、
var myForm = SpreadsheetApp.openByUrl(stname);  //クォーテーションはいらないです
var stForm = myForm.getSheetByName('シートの名前');
にする必要があります。スクリーンショット 2021-08-21 18.37.20.png
シートの名前というのは画像で言う'シート1'のことです。

0Like

Your answer might help someone💌