[GAS]GASで指定したGoogle Driveに保存する

GASでGoogle Drive保存 GAS

↓以前の記事↓

スポンサーリンク

はじめに

これまで手動でやってきたこともGASであれば、簡単に自動化できます!

この記事では、GASを用いて、Google Driveに保存する方法を紹介します。
詰まった点もあるので、そこも紹介できればと思います。

Google Driveにファイルを保存できるようになれば、
LINEから送ったURLを解析して、画像を自動保存することや、1日に1回特定のURLを解析して、結果をDriveに保存等々いろんなことに活用できるので、
ぜひ色々試してみてください。

この記事でわかること

  • GASを使って、指定したGoogle Driveに保存する方法

前提条件

下記を前提として進めていきます。

  • Googleアカウントを持っている方
  • GASを触ったことがある方

内容

DriveApp.createFile()

最初に、これさえあればOKというメソッドです。

Google Apps Script(GAS)の DriveApp.createFile() メソッドは、Google Drive内に新しいファイルを作成するために使用されます。
このメソッドは、異なるタイプの引数を取ることができ、その形式によって異なるオーバーロード(同名のメソッドが異なる引数で使用可能)が存在します。
公式の説明はこちら

  1. createFile(name, content)
    • 引数:
      • name (String): 新しく作成するファイルの名前
      • content (String): ファイルに書き込むテキスト内容
    • 説明: このメソッドはテキストベースのファイルを作成し、与えられた内容をそのファイルに書き込みます。デフォルトのMIMEタイプは text/plain です。
  2. createFile(name, content, mimeType)
    • 引数:
      • name (String): ファイルの名前
      • content (String): ファイルに書き込む内容。バイナリデータを含む場合は、この文字列はバイト列として解釈される
      • mimeType (String): ファイルのMIMEタイプ。例えば、application/pdfimage/jpeg など。
    • 説明: このメソッドは特定のMIMEタイプを持つファイルを作成します。内容はバイナリまたはテキストデータを含むことができます。
  3. createFile(blob)
    • 引数:
      • blob (Blob): ファイルの内容を含むBlobオブジェクト。Blobは Google Apps ScriptBlob クラスのインスタンスで、ファイルのデータとMIMEタイプをカプセル化します。
    • 説明: Blobを使用してファイルを作成する方法です。Blobオブジェクトは、ファイルの名前、データ、MIMEタイプを保持しています。これは画像やPDFファイルなどのバイナリデータを扱う場合に特に便利です。

色々ありますが、DriveApp.createFile()使えば保存できるんだなと覚えておけばOKそうです。

次は保存先を決めましょう。

保存先を決める

保存先指定を下記にまとめました。
フォルダーIDはマイドライブに作成したフォルダのURLから確認できます。
https://drive.google.com/drive/u/0/folders/ここに表示されている文字列がフォルダーIDです

// マイドライブに保存

DriveApp.createFile(”ここは保存形式によって書き分ける")

// 特定のフォルダにファイルを保存

var parentFolderId = "YOUR_FOLDER_ID";

var folder = DriveApp.getFolderById(parentFolderId); //親フォルダを取得
folder.createFile(”ここは保存形式によって書き分ける")

// 特定のフォルダに新しい子フォルダを作成し、ファイルを保存

var parentFolderId = "YOUR_FOLDER_ID";
var folderName = "YOUR_FOLDER_NAME"

var parentFolder = DriveApp.getFolderById(parentFolderId); //親フォルダを取得
var folder = parentFolder.createFolder(folderName); // 親フォルダ内に新しいフォルダを作成
folder.createFile(”ここは保存形式によって書き分ける")
  

textファイルの保存

フォルダーを指定して、テキストファイルを保存する場合

// saveするフォルダーを指定
var folder = "YOUR_FOLDER_ID";
var saveFolder = DriveApp.getFolderById(folder);

// テキストファイルを保存
saveFolder.createFile('Example.txt', 'Hello, world!', MimeType.PLAIN_TEXT);

画像ファイルの保存

// saveするフォルダーを指定
var folder = "YOUR_FOLDER_ID";
var saveFolder = DriveApp.getFolderById(folder);

// ファイル名を指定
var fileName = "SAVE_FILE_NAME" 
var saveFileName = `${fileName}.jpg`;

// 画像のURLを設定
var imageUrl = "IMAGE_URL";

// URLから画像をBlobとして取得
var blob = UrlFetchApp.fetch(imageUrl).getBlob(); 


// Blobを使って画像ファイルを作成し、フォルダに保存する
var file = folder.createFile(blob.setName(saveFileName));

お試し

では、実際にコードをまとめて実施してみましょう!

お手軽に確認できるので、テキストファイルを保存します。
ログで今回作成したfileIDもついでに出力しています。

function saveFileToMyDrive() {
    // ファイル名とファイルの内容
    var fileName = 'Example.txt';
    var fileContent = 'Hello, world!'; // ファイルに書き込む内容

    // ファイルをマイドライブのルートに作成
    var file = DriveApp.createFile(fileName, fileContent, MimeType.PLAIN_TEXT);

    // 結果をログに出力
    Logger.log('File created with ID: ' + file.getId());
}

コードが書けたらタブの実行ボタンを押して、動かしてみましょう。

マイドライブにExample.txtファイルが作成されていればOKです!

トラブルシューティング

Exception: サーバー エラーが発生しました。しばらくしてからもう一度試してください

実行した際に、’Exception: サーバー エラーが発生しました。しばらくしてからもう一度試してください。(行 XX、ファイル「コード」)’のようなエラーが出る場合は、Google Cloud側で設定する必要があります。こちらの記事を参考にさせていただきました。

やることは単純でGoogle Cloud のGoogle Drive APIを有効にすればOKです。

まとめ

今回はGASでGoogle Driveに保存する方法について簡単にまとめてみました。

細かいところが気になる場合は公式のドキュメントを読むのが一番正確なので、気になる方は一読をおすすめします。

コメント

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