こんにちは。サーバーサイドエンジニアの杉浦です。
私がGoogle Ads Scripts(旧:GoogleAdwords Script)の開発を始めてから、約半年が経ちました。
今回は、これからGoogle Ads Scriptsの開発をされる方向けに、設計に必要なTipsをご紹介しようと思います。
開発時に考慮すべきこと
どのアカウントの情報を取得・操作するか
Google Ads Scriptsは、MCCアカウントに対して設定することも出来ますし、各アカウントそれぞれに設定することも出来ます。
そのため、1つのアカウントの情報取得したいのか、複数のアカウントの情報を取得したいのかを開発の前に決める必要があります。
例えば、このような構造をしたアカウントを運用していたとしましょう。
このとき、
1. アカウントA~Eのデータを取得したい⇒MCCアカウント①にscriptを設定
2. アカウントC~Eのデータを取得したい⇒MCCアカウント②にscriptを設定
3. アカウントAのデータだけを取得したい⇒アカウントAにscriptを設定
4. アカウントA・C・Eのデータを取得したい⇒MCCアカウント①にscriptを設定 かつ 特定のアカウントが判断できる要素を設定
となります。
特定のアカウントを指定するためには、アカウントIDを指定したり、ラベルで判断することが出来ます。アカウントIDを指定する場合、対象のアカウントが変更される度にScriptを修正しなくてはなりません。個人的にはアカウントにラベルを設定し、そのラベルが貼られているアカウントをデータ抽出対応とすることをお薦めいたします。
スクリプト30分の壁
これは私が開発を進めていくうえで躓いた点なのですが、1つのスクリプトの実行時間は30分と決まっております。そして30分以内に実行が終わらない場合、「タイムアウトで停止しました」というステータスで実行が停止されてしまいます。
実行レスポンスが遅くなる原因として、
- ログの量が多い
- スプレッドシートに出力するデータ量が多い
が挙げられます。
どうしても30分超えてしまうという場合は、アカウントをID順にソートしてn件ずつにスクリプトを分けるなどの工夫が必要です。
開発を進めてからタイムアウトで悩まないように、データ数を考慮した設計を心がけてください。
運用を考えたシステム設計
この記事を読まれている方は恐らくエンジニアの方だと思いますが、スクリプトの運用をする方もエンジニアでしょうか??
弊社では、広告運用チームのメンバーがスクリプトの運用を行っております。
そのため「データ抽出対象日を手動で設定したいのだけれど、スクリプトの変更はしたくない… 」 という状況が生まれました。
そこでスプレッドシートの固定のセルにデータ抽出対象日を記入してもらい、スクリプトはそのセルの値を参照するというロジックに変更しました。
スクリプトはデータを出力することだけでなく、指定したURLのスプレッドシートを読み込むことができます。
- スクリプト実行ごとに変更する条件はあるか?
- 履歴を残しておく必要はあるか?
- データ出力する場合、スプレッドシートは毎回新規で作成するのか?特定のスプレッドシートを繰り返し使うのか?
どんな運用を行うかを事前に想定した設計をしていただくと、後々にロジックを変更する事態を避けられるのではないかと思います。
最後に
私が初めてGoogle Ads Scriptsの開発を行った時はまだ知識も浅く、開発を進めてから「こうしておけばよかった」と思うことが何度かありました。
このブログを読んでらっしゃる方は、ぜひ手戻りのない設計になっているかを一度チェックしてみてください。
*シリーズ*
Google Ads Scripts入門①
Google Ads Scripts入門②
Google Ads Scripts入門③
エンジニア大募集中
Wedding Parkでは一緒に技術のウエディングパークを創っていくエンジニアを募集しています。
興味のある方はぜひ一度気軽にオフィスに遊びにいらして頂ければと思います。