アクセス権限の変更に伴うスクリプトの修正方法

Googleアカウント連携機能におけるアクセス権限の変更に伴い、修正が必要なスクリプトがあります。対象のスクリプトや修正方法の詳細について以下に説明します。
※アクセス権限の変更については、以下のお知らせをご確認ください。
Yahoo!広告 スクリプト スクリプトの変更と新しいアクセス権限への同意について

スクリプト内容の変更が必要な対象処理

以下の処理を含むスクリプトは、内容を修正してください。
修正例もあわせてご確認ください。

再同意後に利用できなくなる処理

Googleドライブ上にあるYahoo!広告 スクリプト以外で作成したファイル・フォルダの読み取り処理

利用できなくなる関数:
DriveAppのget系の処理

DriveApp.getFileById
DriveApp.getFiles
DriveApp.getFilesByName
DriveApp.getFilesByType
DriveApp.getFolderById
DriveApp.getFolders
DriveApp.getFoldersByName
DriveApp.getRootFolder

※ 以下の処理は引き続き利用可能です。

  • Yahoo!広告 スクリプトで作成したファイル・フォルダの読み取り
  • マイドライブ直下へのファイル・フォルダの作成
  • スプレッドシートの読み取り・更新・マイドライブ直下への新規作成(SpreadsheetAppを利用)
修正後の処理

固定のスプレッドシートの読み取り・書き込み

関数例:
SpreadsheetApp によるスプレッドシートの操作

SpreadsheetApp.create
SpreadsheetApp.openById
SpreadsheetApp.openByUrl

修正が必要な対象スクリプトの判断方法

スクリプト編集画面で"DriveApp.get"を検索し、対象関数が含まれていれば修正の対象です。
検索ショートカット: [Windows]Ctrl+F, [Mac]Command+F
対象スクリプト
検索結果例

利用パターン別の修正例

<パターンA:指定フォルダの配下にファイルを作成する(レポートデータをCSVで書き出し)>

修正前の処理 修正後の処理

■処理
レポート等のデータをcsv形式の文字列に加工し、指定のフォルダ配下にファイルを作成。

■スクリプト

const folderId = 'フォルダID'; // ファイルを格納したいフォルダのID
const fileContent = ''; // カンマ区切りの文字列をレポートデータから生成
const fileName = 'test'; const folder = DriveApp.getFolderById(folderId);
const blob = Utilities.newBlob(fileContent, 'text/csv', fileName);
folder.createFile(blob);

ケース1:スプレッドシート出力に変更
■スクリプト

const spreadsheetId = 'スプレッドシートID';
const sheetName = 'シート1';
const ss = SpreadsheetApp.openById(spreadsheetId);
let sh = ss.getSheetByName(sheetName);
sh.clear();
const reportData = AdsUtilities.getDisplayReport({
  // 取得したいレポートの定義
}).reports[0].rows;
sh.getRange('A1').setValues(reportData);

参考:

ケース2:マイドライブ直下へのファイル出力に変更
■スクリプト

const fileContent = ''; // カンマ区切りの文字列
const fileName = 'test';
const blob = Utilities.newBlob(fileContent, 'text/csv', fileName);
const file = DriveApp.createFile(blob);

※ folderに対してcreateFileではなくDriveApp.createFileとすることで、マイドライブ直下にファイルが作成されます。 

参考:

<パターンB:csvファイルの取得(オフラインコンバージョンやオーディエンスリストのアップロード)>

修正前の処理 修正後の処理

■処理
指定のフォルダ配下で特定の名前のファイルを取得する。

■スクリプト

const folderId = 'フォルダID'; // 取得対象フォルダID
const fileName = 'ファイル名'; // 取得対象ファイル名
const files = DriveApp.getFolderById(folderId).getFilesByName(fileName);
while (files.hasNext()) {
  const file = files.next();
  const fileData = file.getBlob().getBytes();
  // ファイルに対する処理
}

■処理
Googleドライブ全体から特定のファイル名のファイルを取得する。

■スクリプト

const fileName = 'ファイル名'; // 取得対象ファイル名
const files =  DriveApp.getFilesByName(fileName);
while (files.hasNext()) {
  const file = files.next();
  const fileData = file.getBlob().getBytes();
  // ファイルに対する処理
}

■処理
特定のファイルIDを指定してファイルを取得する。

■スクリプト

const fileId = 'ファイルID'; // 取得対象ファイルID
const file = DriveApp.getFileById(fileId);
const fileData = file.getBlob().getBytes();

※取得したファイルを利用して、自動アップロードを実施している(Search.OfflineConversionService.upload()やDisplay.AudienceListService.uploadUserList()を実施している)場合。

スプレッドシートをご用意の上、そのスプレッドシートIDを指定したデータ取得に変更してください。
定期的にリストを取得するケースでは、用意されたスプレッドシートをスクリプト定期実行の前に最新状態に更新してください。その後、該当のスプレッドシートの内容をスクリプトから取得してください。

定期的にリストを取得するケース:オフラインコンバージョン、オーディエンスリストのアップロードなど

参考:

オフラインコンバージョン


オーディエンスリスト

<パターンC:画像・動画ファイルの取得(画像・動画入稿)>

修正前の処理 修正後の処理
■処理
パターンBと同様のGoogleドライブからの取得処理

※取得したファイルを利用して、自動アップロードを実施している(Display.MediaService.add()などを実施している)場合。
Googleドライブからは画像・動画ファイルの取得はできなくなります。
なお、ディスプレイ広告における画像・動画の審査開始は、広告に設定されたタイミングです。事前にアップロードしても広告に設定されるまで審査は行われないため、広告作成時に手動でアップロードしてください。