📁

GASでkintoneの添付ファイルをGoogleDriveに保存する

2022/03/11に公開

kintoneの添付ファイルをGoogleDriveに保存してみましょう👀
GASの使い方は調べてね✨✨

アプリの準備

アプリとAPIトークンを準備します。
アプリに必要なフィールドは「添付ファイルフィールド」です。

ファイルを何か添付しておきましょう。
↓こんなアプリを準備しました。

fileKeyとファイル名を取得する

↓レコード情報を取得するのはこの記事が参考になるかと思います。
https://zenn.dev/juridon/articles/8cbd6a2b3c9be9

↓GASでHTTPリクエストするのはこちらを参考に
https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app

// fileKeyとファイル名を取得する
const url_get = 'https://【サブドメイン】.cybozu.com/k/v1/record.json?app=【アプリID】&id=【レコード番号】';
const options = {
  headers : {
    'X-Cybozu-API-Token' : "【APIトークン】",
  },
};
const resp_get = UrlFetchApp.fetch(url_get,options);
const data = JSON.parse(resp_get);
const fileKey = data.record.添付ファイル.value[0].fileKey;
const fileName = data.record.添付ファイル.value[0].name;

ファイルをダウンロードする

↓kintoneでのファイルのダウンロードのお作法についてはコードはこちらを参考にしてね
https://developer.cybozu.io/hc/ja/articles/200814380

// ファイルをダウンロードする
const url_file = 'https://【サブドメイン】.cybozu.com/k/v1/file.json?fileKey=' + fileKey;
const resp_file = UrlFetchApp.fetch(url_file, options);
const blob = resp_file.getBlob();
// ファイル名をつけ直す
blob.setName(fileName);

GoogleDriveに保存する

保存したいフォルダのIDをメモって使います。
フォルダのIDはGoogleDriveのフォルダのURLの最後のランダムな文字列。
https://drive.google.com/drive/folders/【フォルダのID】

↓コードはこちらを参考に
https://developers.google.com/apps-script/reference/drive/drive-app#getfolderbyidid

// GoogleDriveの指定のフォルダに保存する
const folder = DriveApp.getFolderById("【フォルダのID】");
const driveFile = folder.createFile(blob);

コード全体

こんな感じになります。
突貫工事的なコードなので、関数化したりして使いやすくしてみてね✨✨

function kintone2GoogleDrive(){

  // fileKeyとファイル名を取得する
  const url_get = 'https://【サブドメイン】.cybozu.com/k/v1/record.json?app=【アプリID】&id=【レコード番号】';
  const options = {
    headers : {
      'X-Cybozu-API-Token' : "【APIトークン】",
    },
  };
  const resp_get = UrlFetchApp.fetch(url_get,options);
  const data = JSON.parse(resp_get);
  const fileKey = data.record.添付ファイル.value[0].fileKey;
  const fileName = data.record.添付ファイル.value[0].name;

  // ファイルをダウンロードする
  const url_file = 'https://【サブドメイン】.cybozu.com/k/v1/file.json?fileKey=' + fileKey;
  const resp_file = UrlFetchApp.fetch(url_file, options);
  const blob = resp_file.getBlob();
  // ファイル名をつけ直す
  blob.setName(fileName);

  // GoogleDriveの指定のフォルダに保存する
  const folder = DriveApp.getFolderById("【フォルダのID】");
  folder.createFile(blob);
}

Discussion