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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Analytics

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

Google Apps Script

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

Q&A

0回答

1523閲覧

【GAS】スプレッドシートのセルの値取得コードと、GA4のデータ取得コードの連携について

mas----naka

総合スコア0

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Analytics

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

Google Apps Script

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

0グッド

0クリップ

投稿2022/12/01 06:48

前提

GASでスプレッドシートとGoogleAnalytics4(GA4)を連携させるシステムを作っています。
スプレッドシート自身のURLとセルに記載されたアナリティクスのIDをGAS上に反映させる機能を実装中に以下のエラーメッセージが発生しました。

実現したいこと

・スプレッドシート内の特定のセルに記載されている値(GA4のプロパティID)をGASで取得する
・上記で取得したプロパティIDをGA4のデータを取得するGAS内のプロパティID欄に反映させる
・GA4取得GAS内で指定した項目をスプレッドシートにエクスポートさせる
└この時、セルのプロパティIDが変わることでGASからエクスポートされる内容が変わるようにする

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

プロパティIDが正しくないとのエラーがでて、GA4取得のGASが作動しない。

エラーメッセージ
GoogleJsonResponseException: API call to analyticsdata.properties.runReport failed with error: Invalid property ID: Value. A numeric Property ID is required. To learn more about Property ID, see https://developers.google.com/analytics/devguides/reporting/data/v1/property-id.

該当のソースコード

GAS(Java Script)
ソースコード
function runReport() {
// スプレッドシート&シートオブジェクトを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('データベース');

// セルを選択
var range = sheet.getRange('Z1');
// セルの値を取得
var value = range.getValue();

// 取得したデータを実行ログに表示
console.log(range);

//
/
実行前に「PROPERTY_ID」「SPREADSHEET_ID」「SHEET_NAME」の情報(**)を入力 /
/
/

//BASIC INFO
//取り込み対象のGoogle AnalyticsプロパティID
const PROPERTY_ID = 'Value';
//出力先のスプレッドシートID
const SPREADSHEET_ID = SpreadsheetApp.getActiveSpreadsheet();
//出力先のシート名
const SHEET_NAME = "データベース";

//PARAMETERS
//取得したいメトリクスの名前
const METRIC_NAMES = ['sessions', 'newUsers', 'activeUsers', 'conversions','engagedSessions','userEngagementDuration'];
//取得したいディメンジョンの名前
const DIMENSION_NAMES = ['Date','eventName','defaultChannelGroup'];
//取得期間の開始終了
const START_DATE = "2022-01-01";
const END_DATE = "today";

try {
const metrics = METRIC_NAMES.map((x) => {
const tmp = AnalyticsData.newMetric();
tmp.name = x;
return tmp;
});

const dimensions = DIMENSION_NAMES.map((x) => {
const tmp = AnalyticsData.newDimension();
tmp.name = x;
return tmp;
});

const dateRange = AnalyticsData.newDateRange();
dateRange.startDate = START_DATE;
dateRange.endDate = END_DATE;

const request = AnalyticsData.newRunReportRequest();
request.dimensions = dimensions;
request.metrics = metrics;
request.dateRanges = dateRange;

const report = AnalyticsData.Properties.runReport(request,'properties/' + PROPERTY_ID);
if (!report.rows) {
Logger.log('No rows returned.');
return;
}

const spreadsheet = SpreadsheetApp.openById(SPREADSHEET_ID);
const sheet = spreadsheet.getSheetByName(SHEET_NAME);
sheet.clear();

// Append the headers.
const dimensionHeaders = report.dimensionHeaders.map(
(dimensionHeader) => {
return dimensionHeader.name;
});
const metricHeaders = report.metricHeaders.map(
(metricHeader) => {
return metricHeader.name;
});
const headers = [...dimensionHeaders, ...metricHeaders];

sheet.appendRow(headers);

// Append the results.
const rows = report.rows.map((row) => {
const dimensionValues = row.dimensionValues.map(
(dimensionValue) => {
return dimensionValue.value;
});
const metricValues = row.metricValues.map(
(metricValues) => {
return metricValues.value;
});
return [...dimensionValues, ...metricValues];
});

sheet.getRange(2, 1, report.rows.length, headers.length).setValues(rows);

Logger.log('Report spreadsheet created: %s',spreadsheet.getUrl());
} catch (e) {
Logger.log(e);
}
}

function _runReport() {
/**

  • TODO(developer): Uncomment this variable and replace with your
  • Google Analytics 4 property ID before running the sample.

*/
const propertyId = PROPERTY_ID;

try {
const metric = AnalyticsData.newMetric();
metric.name = 'screenPageViews';

const dimension = AnalyticsData.newDimension();
dimension.name = 'pageTitle';

const dateRange = AnalyticsData.newDateRange();
dateRange.startDate = 'today-90';
dateRange.endDate = 'today';

const request = AnalyticsData.newRunReportRequest();
request.dimensions = [dimension];
request.metrics = [metric];
request.dateRanges = dateRange;

const report = AnalyticsData.Properties.runReport(request,
'properties/' + propertyId);
if (!report.rows) {
Logger.log('No rows returned.');
return;
}

const spreadsheet = SpreadsheetApp.create('Google Analytics Report');
const sheet = spreadsheet.getActiveSheet();

// Append the headers.
const dimensionHeaders = report.dimensionHeaders.map(
(dimensionHeader) => {
return dimensionHeader.name;
});
const metricHeaders = report.metricHeaders.map(
(metricHeader) => {
return metricHeader.name;
});
const headers = [...dimensionHeaders, ...metricHeaders];

sheet.appendRow(headers);

// Append the results.
const rows = report.rows.map((row) => {
const dimensionValues = row.dimensionValues.map(
(dimensionValue) => {
return dimensionValue.value;
});
const metricValues = row.metricValues.map(
(metricValues) => {
return metricValues.value;
});
return [...dimensionValues, ...metricValues];
});

sheet.getRange(2, 1, report.rows.length, headers.length)
.setValues(rows);

Logger.log('Report spreadsheet created: %s',
spreadsheet.getUrl());
} catch (e) {
console.log(e);
// TODO (Developer) - Handle exception
Logger.log('Failed with error: %s', e.error);
}
}

試したこと

「const PROPERTY_ID = 'Value';
//出力先のスプレッドシートID
const SPREADSHEET_ID = SpreadsheetApp.getActiveSpreadsheet();
//出力先のシート名
const SHEET_NAME = "データベース";」
に問題があるかと思い、getvalue関数などを組み込んでみましたが、難しそうでした。

課題としては、セルを取得するコードと、GA4のデータを取得するコードの連携ができていないことかと考えています。

補足情報(FW/ツールのバージョンなど)

不明点あればご質問ください

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Cocode

2022/12/01 09:20

エラーの内容としては、「Propety IDは数字じゃないとだめなのに、指定されたのは数字じゃないよ」ってことだと思うのです。 //取り込み対象のGoogle AnalyticsプロパティID const PROPERTY_ID = 'Value'; ↑実際には、ここに何をいれてらっしゃいますか?それは、数字ですか?
mas----naka

2022/12/06 04:34

こちら早速質問いただいたにもかかわらず、回答遅れまして申し訳ございません。実際にはプロパティIDを入れておりますので、数字が入っている形になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問