お世話になっております。
表題の通り、kintone側からイベントでGASに書いたコードを実行させたいのですが、上手くいっておりません。
ご意見や解決方法等のご教示お願い致します。
またコードのどこが原因なのか不明のため、コードの全体を記載しておりますので、ご了承ください。
以下のサイトを参考にさせていただいています。
GASでkintoneの添付ファイルをGoogleDriveに保存する
kintoneアプリからGASでレコード情報を取得する方法(カーソルから取得する方法)
実現したいこと
前提:kintoneのプロセス管理において、次のステータスに移行したときに添付ファイルをGoogleDriveに自動で保存したい。
現状の想定:ステータス更新時、GASのコードを外部APIとして呼び出し、GAS側で添付ファイルの保存処理を行う。
理想:ステータス更新を行ったレコードのレコード番号など(クエリで一意に検索できるもの)をGASに渡す。その後、GAS側でその引数を使ってステータス更新されたレコードを特定し、そのレコードの添付ファイルをGoogleDriveに保存する。
発生した問題やエラーメッセージを具体的に書きましょう
・kintoneにステータス200が返ってくるにも関わらず、添付ファイルが保存されていない。
・GAS単体で実行したときには保存されている。
・kintoneからGASへの引数を渡せていない。
実行したコード
・kintone
第一段階として、引数を渡さずにGAS側でレコード番号を指定するテスト状態のコードです。
(function() {
'use strict';
kintone.events.on('app.record.detail.process.proceed', function(event) {
var record = event['record'];
var appId = kintone.app.getId();
var recordId = kintone.app.record.getId();
var nStatus = event.nextStatus.value;
if (nStatus === "承認" ){
console.log(record);
var gasurl = '【GASのAPIのURL】';
kintone.proxy(gasurl, 'GET', {}, {}, (body, status, headers) => {
// success
console.log('status:'+status);
}, (error) => {
// error
console.log(error); // proxy APIのレスポンスボディ(文字列)を表示
});
return event;
}
});
})();
・GAS
function doGet() {
var appId = 【アプリID】;
var recordId = 【レコード番号】; // kintoneから渡したい
// fileKeyとファイル名を取得する
const url_get = 'https://【サブドメイン】.cybozu.com/k/v1/record.json?app='+appId+'&id='+recordId;
const options = {
headers : {
'X-Cybozu-API-Token' : "【kintoneアプリの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("【GoogleDriveのフォルダID】");
folder.createFile(blob);
};