質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Google Apps Script

    1259questions

    Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

  • Google Analytics

    239questions

    Google AnalyticsはGoogleが開発した無料のウェブ分析のソリューションです。複数のクライアント側のAPIとデータをエクスポートし管理するREST APIも格納されています。

  • ChatWork

    32questions

    業務の効率化を目的としたコミュニケーションツール。 グループチャット、ビデオ・音声通話、ファイル共有、タスク管理などの機能を備えています。マルチデバイス対応で、ブラウザだけでなくタブレットやスマートフォンでも利用可能です。

Analyticsの結果を毎朝チャットワークに送信する方法

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 358

ryu01212008

score 18

 実現したいこと

Google Analyticsの毎日のレポートを自分のチャットワーク宛に送信したいと思っているのですが、
エラーメッセージが出てしまい進めません。
解決方法をご教授いただきますようお願いいたします。

 発生している問題・エラーメッセージ

TypeError: null のメソッド「getSheetByName」を呼び出せません。(行 4、ファイル「コード」)

 該当のソースコード

function cwFromGA() {

  var mySS=SpreadsheetApp.getActiveSpreadsheet(); //スプレッドシートを取得
  var sheetDaily=mySS.getSheetByName("SCデイリーレポート"); //SCデイリーレポートシートを取得

  var rowDaily=sheetDaily.getDataRange().getLastRow(); //SCデイリーレポートシートの使用範囲のうち最終行を取得

  var yDate = sheetDaily.getRange(rowDaily,1).getValue();

 /* チャットワークに送る文字列を生成①全体レポート */
  var strBody = "[info][title]SCデイリーレポート " + 
      Utilities.formatDate(yDate, 'JST', 'yyyy/MM/dd') + "[/title]" +  //ga:date
      "ユーザー: " 
      + sheetDaily.getRange(rowDaily,2).getValue() + "\n" + //ga:users
      "セッション: " 
      + sheetDaily.getRange(rowDaily,3).getValue() + "\n" + //ga:sessions
      "直帰率: " 
      + Number(sheetDaily.getRange(rowDaily,4).getValue()*100).toFixed(1) + "%\n" + //ga:bounceRate
      "平均セッション時間: " 
      + Number(sheetDaily.getRange(rowDaily,5).getValue()).toFixed(1) + "\n" + //ga:avgSessionDuration
      "ページビュー: " 
      + sheetDaily.getRange(rowDaily,6).getValue() + "\n" + //ga:pageviews
      "ページビュー/セッション: " 
      + Number(sheetDaily.getRange(rowDaily,7).getValue()).toFixed(2) + "[hr]"; //ga:pageviewsPerSession

  /* チャットワークに送る文字列を生成②記事ランキング */
  var sheetPost=mySS.getSheetByName("SC記事別レポート"); //SC記事別レポートシートを取得

  for(var i=1;i<=10;i++){

    strBody = strBody + "[" + i + "] " + sheetPost.getRange(i+15,2).getValue() + ":" 
      + sheetPost.getRange(i+15,3).getValue() + "\n";

  }  

  strBody = strBody + "[hr]" 
  + mySS.getUrl() + "[/info]"; //スプレッドシートのURLを取得
  // チャットワークにメッセージを送る
  var cwClient = ChatWorkClient.factory({token: 'ここのチャットワークのAPI'}); //チャットワークAPI
  cwClient.sendMessage({
    room_id: ここにルームID, //ルームID
    body: strBody
  });
}

 試したこと

エラーメッセージに従って、シート名の変更を試みましたが解決しませんでした。

 チャットワークにテスト送信した時に成功したソース

function sendMessageTest() { 
  var client = ChatWorkClient.factory({token: 'ここにAPI'}); //チャットワークAPI
  client.sendMessage({
    room_id:ここにルームID, //ルームID
    body: 'チャットワークにメッセージを表示するテスト'});}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • papinianus

    2018/09/19 13:12

    どこに書いてどうやってトリガを設定していますか?

    キャンセル

回答 1

checkベストアンサー

0

var mySS=SpreadsheetApp.getActiveSpreadsheet();


この部分でスプレッドシートが取得できていないみたいですが、リファレンスには

Returns null if there is none.

とあります。

これって、スプレッドシートに紐づくスクリプトですよね?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/09/19 13:10 編集

    早速の回答ありがとうございます。初めて導入するもので、GASの仕様などが細かくわかりかねるのですが、別のテスト送信をした時にはチャットワークに送れたので、スプレッドシートに紐づくものだと勝手に思っておりました。参考にその時のソースを追記しておきます。

    キャンセル

  • 2018/09/19 13:13

    スプレッドシートを開いて、メニューのスクリプトエディタから書いているのか、ドライブにスクリプトファイルを追加して書いているのか、どちらでしょう?

    キャンセル

  • 2018/09/19 13:15 編集

    後者のドライブにスクリプトファイルを追加して書いている方に該当します。

    キャンセル

  • 2018/09/19 13:24

    ドライブにスクリプトファイルを追加して書いていたのですが、該当のスプレッドシートのメニューのスクリプトエディタで編集したところ解決しました!

    キャンセル

  • 2018/09/19 13:24

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

    キャンセル

  • 2018/09/19 13:56 編集

    @papinianusさん
    フォローありがとうございます。

    @ryu01212008さん
    ドライブにスクリプトファイルを追加すると、ActiveSpreadsheetってどれ!?という状態になるんです。
    そういう場合にはopenById(id)やopenByUrl(url)を使います。
    https://developers.google.com/apps-script/guides/standalone
    https://developers.google.com/apps-script/guides/bound
    こちらの、スタンドアロンスクリプトとバインドコンテナスクリプトの違いも見ておいてくださいね。

    キャンセル

同じタグがついた質問を見る

  • Google Apps Script

    1259questions

    Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

  • Google Analytics

    239questions

    Google AnalyticsはGoogleが開発した無料のウェブ分析のソリューションです。複数のクライアント側のAPIとデータをエクスポートし管理するREST APIも格納されています。

  • ChatWork

    32questions

    業務の効率化を目的としたコミュニケーションツール。 グループチャット、ビデオ・音声通話、ファイル共有、タスク管理などの機能を備えています。マルチデバイス対応で、ブラウザだけでなくタブレットやスマートフォンでも利用可能です。