AirTable: レコード追加 (AirTable: Add New Record)
AirTable Base にレコードを1件追加します。
Configs
- A: API key を設定した通信許可設定を選択してください *
- B: Base ID(シート毎に付与されたId)を入力してください *
- C: レコード ID が格納される文字型データを選択してください
- D1F: 追加データ1のフィールド名を入力してください
- D1V: 追加データ1が格納されている文字型データを選択してください#{EL}
- D2F: 追加データ2のフィールド名を入力してください
- D2V: 追加データ2が格納されている文字型データを選択してください#{EL}
- D3F: 追加データ3のフィールド名を入力してください
- D3V: 追加データ3が格納されている文字型データを選択してください#{EL}
- D4F: 追加データ4のフィールド名を入力してください
- D4V: 追加データ4が格納されている文字型データを選択してください#{EL}
- D5F: 追加データ5のフィールド名を入力してください
- D5V: 追加データ5が格納されている文字型データを選択してください#{EL}
Script (click to open)
const FIELD_NUM = 5; // 扱えるフィールドの数
main();
function main(){
//// == 工程コンフィグ・ワークフローデータの参照 / Config & Data Retrieving ==
const authSettingName = configs.get("conf_auth");
const baseId = configs.get("conf_baseId");
const recordIdDef = configs.getObject("conf_recordId");
const recordObj = retrieveRecordContent();
//// == 演算 / Calculating ==
const apiUri = determineApiUri( baseId );
const recordId = addRecord( apiUri, authSettingName, recordObj );
//// == ワークフローデータへの代入 / Data Updating ==
setData( recordIdDef, recordId );
}
/**
* configからレコード情報(フィールドコードとフィールドの値)を読み出し、JSON オブジェクトを返す
* @return {Object} recordObj レコード情報の JSON オブジェクト
*/
function retrieveRecordContent() {
const recordObj = {};
recordObj.records = [];
recordObj.records[0] = {};
recordObj.records[0].fields = {};
for (let i = 0; i < FIELD_NUM; i++) {
const fieldNameConfigName = `conf_fieldName${i+1}`;
const fieldValueConfigName = `conf_fieldValue${i+1}`;
const fieldName = configs.get( fieldNameConfigName );
if ( fieldName === "" || fieldName === null ) { // フィールドコードが空
continue;
}
if ( recordObj[fieldName] !== undefined ) { // フィールドコードの指定が重複
throw "The same Field Name is set multiple times.";
}
let fieldValue = configs.get( fieldValueConfigName );
if ( fieldValue === "" || fieldValue === null ) { // 値が空
fieldValue = null;
}
recordObj.records[0].fields[fieldName] = fieldValue;
}
return recordObj;
}
/**
* REST API のレコード追加の URI を決定する
* ドメインが空、または kintone のドメインとして不正な文字列であればエラーとする
* ゲストスペース ID が不正な文字列であればエラーとする
* @param {String} baseId ゲストスペース ID
* @return {String} apiUri API の URI
*/
function determineApiUri( baseId ) {
let apiUri = "";
apiUri = `https://api.airtable.com/v0/${baseId}/Table1?maxRecords=3&view=Grid%20view`;
return apiUri;
}
/**
* REST API にレコード追加の POST リクエストを送信する
* アプリ ID が空、または不正な文字列であればエラーとする
* @param {String} apiUri API の URI
* @param {String} authSettingName API key を含む認証設定
* @param {Object} recordObj レコード情報の JSON オブジェクト
* @return {String} recordId レコード ID
*/
function addRecord( apiUri, apiToken, recordObj ) {
const body = recordObj;
engine.log(`API URI: ${apiUri}`);
engine.log(`Request Body: ${JSON.stringify(body)}`);
const response = httpClient.begin()
.authSetting(apiToken)
.body(JSON.stringify(body), "application/json; charset=UTF-8")
.post( apiUri );
//when error thrown
const responseJson = response.getResponseAsString();
const status = response.getStatusCode();
const accessLog = `---POST request--- ${status}\n${responseJson}\n`;
engine.log(accessLog);
if (status >= 300) {
throw `Failed to add record. status: ${status}`;
}
const json = JSON.parse(responseJson);
return json.id;
}
/**
* データ項目に出力する
* @param {ProcessDataDefinitionView} dataDef データ項目の ProcessDataDefinitionView
* @param {String} dataString 出力する文字列
*/
function setData( dataDef, dataString ){
if(dataDef !== null){
engine.setData( dataDef, dataString );
}
}
Download
2021-12-15 (C) Questetra, Inc. (MIT License)
https://support.questetra.com/ja/addons/airtable-record-add/
Addonファイルのインポートは Professional でのみご利用いただけます
自由改変可能な JavaScript (ECMAScript) コードです。いかなる保証もありません。
Notes
- AirTable 側の設定、API key・Base ID 等の取得はこちらのページを参考にしてください。また、Questetra 側の「HTTP 認証設定」は「トークン直接指定」を使ってください。
Capture
