GASでGoogleドキュメントをファイル名から取得する方法

GAS

GASでよくあるシステムの一つとして、Googleドキュメントにスプレッドシートのデータを反映させることですよね。

マスタテーブルとしてスプレッドシートを利用して、ドキュメントの一部を置き換えて、一気に複数のファイルを作ることがあると思います。

GoogleドキュメントのIDが固定されていればいいですが、テンプレートファイルが置き換えられたりコピーを利用したりするなどでIDが固定されているとは限りません。

そんなときは、ファイル名を利用して開いてみましょう。

スポンサーリンク

Googleドキュメントをファイル名から開く

前提条件としては、Googleスプレッドシートが保存されているフォルダと同じフォルダ内にそのGoogleドキュメントがあるという状態です。

①フォルダIDを取得する

/*****************************
 * 取得用ファイル設定用
 *****************************/
const TEMPLATE_DOCUMENT_NAME = "通知書_テンプレート"            //(1)
let TEMPLATE_DOCUMENT_ID                                      //(2)  
const ssid = SpreadsheetApp.getActiveSpreadsheet().getId()    //(3)
const parentFolder = DriveApp.getFileById(ssid).getParents()  //(4)
const folderId = parentFolder.next().getId()                  //(5)
const folder = DriveApp.getFolderById(folderId)               //(6)

(1)まずはテンプレートファイルの名前を指定しておきます。

(2)取得するドキュメントのIDを格納する変数を作成します。

(3)現在開かれているGoogleスプレッドシートのIDを取得します。

(4)スプレッドシートが所属するフォルダを取得します

(5)(4)のフォルダのIDを取得します

(6)(5)で取得したIDからフォルダオブジェクトを作成します。

ここまでが準備です。

②テンプレートファイルを指定する

/****************************
 * 実行関数
 ****************************/
function main() {
  
  //テンプレートファイルがない場合、終了
  const params = `title = '${TEMPLATE_DOCUMENT_NAME}'` //(1)
  const files = folder.searchFiles(params)             //(2)
  
  if(files.hasNext()) {                                //(3)
    const file = files.next()                          //(4)
    TEMPLATE_DOCUMENT_ID = file.getId()                //(5)
  }else {
    Browser.msgBox("テンプレートファイルがありません")    //(6)
    return
  }

}

(1)「title = “ファイル名”」として作成するため、変数から取得する

(2)folderオブジェクトのメソッドとしてsearchFileを利用します。引数にファイル名のパラメータを指定する。

(3)ファイルがある場合はこのif文に入ってきます。

(4)ファイルオブジェクトが作成されます。

(5)(4)のファイルからIDを取得して最初に作成した変数に格納します。

(6)テンプレートファイルがなければ、エラーとなり終了します。

このあとはIDを使用してファイルを開いたりすることができますね。

GAS
スポンサーリンク
ようをフォローする
スポンサーリンク
DynaKnowledge

コメント

タイトルとURLをコピーしました