@scoo

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

GAS TypeError: Cannot read properties of null (reading 'getLastRow') というエラーについて

Q&A

Closed

解決したいこと

ここに解決したい内容を記載してください。

GASを利用し、特定のハッシュタグのツイートを自動リツイートするBOTを作っています。

下記のエラーが対処できず、質問させていただきました。

このページからコピペする形で作成しました。
https://kabatin.hateblo.jp/entry/2022/02/27/205845#%E3%81%8A%E3%81%BE%E3%81%91

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

TypeError: Cannot read properties of null (reading 'getLastRow')
pickUpSearchWords	@ コード.gs:74
main	@ コード.gs:36

該当するソースコード(複数あります)

function pickUpSearchWords()
{
  var titleRow = 1;
  var startRow = 1 + titleRow;
  var startCol = 1;
  var endRow = sheetData.getLastRow() - titleRow;
  var endCol = 3;
  
  return sheetData.getRange(startRow, startCol, endRow, endCol).getValues();
}


function main()
{
  var service = twitter.getService();

  var searchWords = pickUpSearchWords();
  for (var i = 0; i < searchWords.length; i++)
  {
    var searchWord = searchWords[i][0];
    var type = searchWords[i][1];
    var lastTweetId = searchWords[i][2];

    var tweetList = findTweets(service, searchWord, lastTweetId);
    if (tweetList == null)
    {
      continue
    }
    
    for (var j = 0; j < tweetList.length; j++) {
      var tweet = tweetList[j];
      if (tweet.id > lastTweetId) {
        lastTweetId = tweet.id;
      }
      if (type == 'いいね') {
        putFavorite (service, tweet);
      } else if (type == 'RT') {
        putRetweet (service, tweet);
      }
    }

    var titleRow = 1;
    var lastTweetIdCol = 3;
    var updateCell = sheetData.getRange(i + 1 + titleRow, lastTweetIdCol, 1, 1);
    updateCell.setValue(lastTweetId);
  }
}

解決したいこと

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

0 likes

2Answer

とりあえずエラーメッセージで検索するくらいはしましょう。先の回答者様の通り、参考になるリンク等が得られると思います。

原因は変数 sheetData がnullになっていることです。
コピペ元は知りませんが、この変数を定義する部分を確認してください。
あるあるとしては、シートの取得に失敗しているパターンです。idやシート名が誤っている場合、エラーではなくnullで取得される仕様があるからです。

1Like

Comments

  1. @scoo

    Questioner

    シート名を入力するべき箇所にスプレッドシート名を入力していました。
    こんな初歩的なミスにお手数おかけして申し訳ありませんでした。
  2. 誰しもが通る道なので、問題ありませんよ。
    特にタイポや勘違いはよくあることです。
    今後も質問する機会があれば、最初に述べたようにエラーメッセージはググってみることと、その結果と試してみたことを記載してあげてください。スムーズな解決につながりますので。
  3. @scoo

    Questioner

    そう言ってくださると助かります。
    恥ずかしながら対処法と思われる記事を発見しても内容が理解できず何も出来ないという状況ですが、忘れず検索していきます。

    ありがとうございました。

Comments

  1. @scoo

    Questioner

    シート名を入力するべき箇所にスプレッドシート名を入力していました。
    こんな初歩的なミスにお手数おかけして申し訳ありませんでした。

Your answer might help someone💌