Google Apps Script (GAS) で更新が反映されない場合の対処

こんにちは, HACKNOTEのJunya.kです。
SpreadSheetやGoogle Driveの操作を簡単にするGoogle Apps Scriptですが, Webアプリケーションなどとして利用する場合保存しても変更が反映されないことがあります.

更新が反映されない例

以下のようにHTTPのGETリクエストを受け付けるGASを作成したとします.

function doGet(e) {
  var file_name = 'テスト'; // utf8
  var fileIT = DriveApp.getFilesByName(file_name).next();
  var textdata = fileIT.getBlob().getDataAsString('utf8');
  var id = fileIT.getId();
  Logger.log(id);

  var response = { "id": id };

  var json = {"text": "Hello World."};

  Logger.log(response);
  return ContentService.createTextOutput(JSON.stringify(json)).setMimeType(ContentService.MimeType.JSON);

}

このスクリプトはHello World.を返します. リクエストが通るのを確認したので以下のように変更します.

function doGet(e) {
  var file_name = 'テスト'; // utf8
  var fileIT = DriveApp.getFilesByName(file_name).next();
  var textdata = fileIT.getBlob().getDataAsString('utf8');
  var id = fileIT.getId();
  Logger.log(id);

  var response = { "id": id };

  var json = {"text": "Hello World."};

  Logger.log(response);
  return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON);

}

このようにすればテストという名前を持つファイルのファイルIDが帰ってくるはずです.
ところが, これを保存して同じようにリクエストしてみるとHello World.が帰ってきます.

バージョンを新しくする必要がある

HTTPに対応させる際, ウェブアプリケーションとして導入をしたはずです.
変更を反映させるには, この導入のページにあるプロジェクトバージョンを新しくしなければなりません.

保存した上でこのバージョンを新しくしてあげると更新が反映されます.