(function() {
‘use strict’;
kintone.events.on(‘app.record.detail.show’, function(event) {
//Function to create and attach a text file
function attachTextFileToKintone() {
var appId = kintone.app.getId(); // Replace with your Kintone App ID
var recordId = kintone.app.record.getId(); // Replace with the record ID to attach the file
var fileFieldCode = ‘TOTFILE’; // Replace with your Kintone File Field Code
var apiToken = ’ — ';
var text = “This is a sample text file.”;
var fileName = “sample.txt”;
var blob = new Blob([text], { type: ‘text/plain’ });
var formData = new FormData();
formData.append(fileFieldCode, blob, fileName);
var xhr = new XMLHttpRequest();
xhr.open(‘POST’, ‘https:// — .cybozu.com/k/v1/record/attachment.json’, true);
xhr.setRequestHeader(‘X-Requested-With’, ‘XMLHttpRequest’);
xhr.setRequestHeader(‘Authorization’, ‘Bearer’ + apiToken); //Uncomment this line if authentication is required
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
alert(‘Text file attached successfully!’);
console.log(xhr.responseText);
} else {
alert('Error attaching text file: ’ + xhr.status);
console.error(xhr.responseText);
}
}
};
xhr.send(formData);
}
// Create a button
var button = document.createElement(‘button’);
button.innerHTML = ‘Attach Text File’;
button.addEventListener(‘click’, attachTextFileToKintone);
// Append the button to the page
document.body.appendChild(button);
});
})();
XMLHttpRequest でフォームで作って作成したり、
KintoneでAPIを利用して作ったりしても 上手く行かないです。
詳細設定は以下の通りです。
JavaScriptプラグインしか入れてません、
最初はどいうファイルでも構いません、
ファイルをアップロードして添付ファイルと結び付けるには
①ファイルをアップロードするREST APIを実行
②成功時にアップロードしたファイルのアップロード用ファイルキーが返ってくるので、1件のレコードを更新するREST APIのリクエストボディにファイルキーを含めて実行
といった手順で可能です(もし、既にレコード内にある添付ファイルを別のレコードに添付するような動作をする場合は、レコード内のダウンロード用ファイルキーを使ってダウンロード→ダウンロードしたファイルをアップロード→アップロード用ファイルキーを使って1件のレコードを更新という手順になります)。
REST APIを使用しても保存されなかったです、、
ファイルがダウンロードされているのは確認済みです。
後は保存するだけなのですが何故か上手く行かないです。 (エラーは無し)
(function() {
'use strict';
kintone.events.on('app.record.detail.show', (event) => {
const fileContent = 'テストファイルです';
const blob = new Blob([fileContent], {
type: 'text/plain'
});
const fileName = 'test.txt';
const fieldType = 'TOTFILE';
const recordId = kintone.app.record.getId();
const appId = kintone.app.getId();
const requestToken = kintone.getRequestToken();
const formData = new FormData();
formData.append(' __REQUEST_TOKEN__', requestToken);
formData.append('app', appId);
formData.append('record', recordId);
formData.append('field', fieldType);
formData.append('file', blob, fileName);
saveAs(blob, fileName);//
const endpointUrl = 'https:// *********.cybozu.com/k/v1/file.json';
const headers = {
'X-Requested-With': 'XMLHttpRequest',
'X-Cybozu-API-Token': ' ****************************',
};
fetch(endpointUrl, {
method: 'POST',
headers,
body: formData,
})
.then((resp) => resp.json())
.then((respData) => {
console.log("form の中身" + respData);
const json = {
app: kintone.app.getId(),
id: kintone.app.record.getId(),
record: {
file: {
value: [{fileKey: respData.fileKey}]
}
}
};
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', json);
console.log(json);
console.log("im called tho");
})
.catch((error) => {
console.error(error);
});
});
})();
送ってるモノは違うのでしょうか?
mtec さま
const json = {
app: kintone.app.getId(),
id: kintone.app.record.getId(),
record: {
file: {
value: [{fileKey: respData.fileKey}]
}
この部分ですが、最初に投稿された画像を見ると、フィールドコードがTOTFILEとなっていますが、それであれば
const json = {
app: kintone.app.getId(),
id: kintone.app.record.getId(),
record: {
TOTFILE: {
value: [{fileKey: respData.fileKey}]
}
こうなるはずです。
画像のフィールドコードに気付かずにfileというフィールドコードで動かしてみて、エンドポイントとAPIトークンのみ変更で弊社環境は成功した(FileSaverは使っていないのでsaveAsの行は削除しました)ので、コードは問題ないと思います。
あとは先に投稿されたらいとさまに同じく、投稿内容の修正をおすすめします。