2024-05-30
(C) Questetra, Inc. (MIT License)
3
2
This item downloads Choice Data in specified 2 columns from Google Sheet.
この工程は、Google スプレッドシートから指定した2列に入っている選択肢データを取得します。
https://support.questetra.com/bpmn-icons/googlesheets-getidslabels/
https://support.questetra.com/ja/bpmn-icons/googlesheets-getidslabels/
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADbElEQVRYR8WXS0hUURjH/2dGJFDz
lqNimmORhAU5hRVFojgTQSTarl3azN5x1aboQdAqGoVc2AyOFoGCpQuN7E6MRIVW4BBZUqJkbYTw
+H7M48Sdx3Ve986d0crFuDjfd8/v+5/vcQ7Bf/4jyezPWfX1IKQKDDoAHIj/P8AwBoCCYAwETnqF
71f63YQAXEc1B19aE8DMAOGUfZhRgFig8rTQRieV85EF4Gw1DQC5r3zj6K0YBUMjNTn6pCAkATir
3gJCmpRFnNDKQo18czyruACcVW8HIZcTfjYpA2anRkdjtEsMQHjkvefuoqawQvTxMV8w54S8Y2DM
/4uhmRGUZhfj9gcbBn+8lcZirIWaHOZwgwiAwJmrOkIGzro2lOeUJozzxcwITuYf8ts1v2lB39Sw
HMTF8JwQAQLZrp4KT7hkAbj0LMxvLOHquwfonuQlIBiFyrsvVB2bADbDTQA3wr1SARD8F9zLuD7a
jq6JQSklblEjL+yHTQCrQWgk2akC7FCnY2d6hug+uzqHSy+vSapAjY5dIkCwwz2LtlaqwNz6Ihbd
yxHuK551nHpqSpgLfgWkal4pQLxdlj1rKOqqTVgRAQCbwQmgKlUFUgIAhqmRrw4pMA1CtHIAK541
LGxEyhxtr1apkbsjMC4SK4AxauKPhhRg8aIIPwLX7294NPEch3fvR/d3HpUFOuzJ0IhuHuYF//M9
us/eUQYgjE8jT5ICGJoZhU5TivbxPpwvPo2izLxNAJ8X9omBFAGs+oRHICjw6tdHHNMcRNvnXtRq
z2BvZr4I4PZ58PBLfxIAzEWNDp3iJBQAeiYdOJJzAJ1fB2AoOoHCzFwRwOvzon/6dRIAkUkYd/RG
58Do7DgqcsvQ+qkHdSWV0GYVRChwz/VEOUBwMIWqQLhqyTaibU9CxvxDSXErFspwyb0q3VgAqAiB
RkkZMsxTE++v120ZRik0ojjDSBjH3rTp8IH0V1oxwzzUnpKYcRxoyZEXkqELrTieVyYru9Si0DW1
j+tjl4NnH1qQvZKltLO8kyi9JEBwOm7/pZSxTmpyNETz/atreUzksgqEFv0XFRB79E1J8dEICQfW
kNLDRIQIPM3MYDArBhE2JhCeZpYtPc2iIw0ogmoQogMYB5DygA1zAYSCMeGR6pSLWHEOKJZ5i4Z/
AEwJzTC2ALrNAAAAAElFTkSuQmCC
{
const auth = httpClient.createAuthSettingOAuth2(
'Google',
'https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force',
'https://accounts.google.com/o/oauth2/token',
'spreadsheets',
'consumer_key',
'consumer_secret',
'access_token'
);
configs.putObject('conf_OAuth2', auth);
// スプレッドシートの ID を設定した文字型データ項目(単一行)を準備
const spreadSheetIdDef = engine.createDataDefinition('スプレッドシートの ID', 1, 'q_SpreadSheetId', 'STRING_TEXTFIELD');
engine.setData(spreadSheetIdDef, sheetId);
configs.putObject('conf_DataIdB', spreadSheetIdDef);
// シートのタイトルを設定した文字型データ項目(単一行)を準備
const sheetTitleDef = engine.createDataDefinition('シートのタイトル', 2, 'q_SheetTitle', 'STRING_TEXTFIELD');
engine.setData(sheetTitleDef, sheetTitle);
configs.putObject('conf_DataIdC', sheetTitleDef);
configs.put('conf_DataIdD', rangeI);
configs.put('conf_DataIdE', rangeL);
// 文字型データ項目を準備して、config に指定
const idDataDef = engine.createDataDefinition('選択肢 ID の一覧', 1, 'q_Id', 'STRING_TEXTFIELD');
configs.putObject('conf_DataIdF', idDataDef);
// 文字型データ項目の値(スプレッドシートの ID)を指定
engine.setData(idDataDef, '事前文字列');
// 文字型データ項目を準備して、config に指定
const labelDataDef = engine.createDataDefinition('選択肢ラベルの一覧', 2, 'q_Label', 'STRING_TEXTFIELD');
configs.putObject('conf_DataIdG', labelDataDef);
// 文字型データ項目の値(スプレッドシートのタイトル)を指定
engine.setData(labelDataDef, '事前文字列');
return {
idDataDef,
labelDataDef
};
};
/**
* Get リクエストのテスト
* @param {Object} request
* @param request.url
* @param request.method
* @param request.contentType
* @param request.body
* @param sheetId
* @param sheetTitle
*/
const assertGetRequest = ({ url, method, contentType, body }, sheetId, sheetTitle, rangeI, rangeL) => {
let newRangeI = rangeI.replace(":", "%3A");
let newRangeL = rangeL.replace(":", "%3A");
expect(url)
.toEqual(`https://sheets.googleapis.com/v4/spreadsheets/${sheetId}/values/:batchGet`
+ `?ranges=${sheetTitle}%21${newRangeI}&ranges=${sheetTitle}%21${newRangeL}`
+ "&valueRenderOption=UNFORMATTED_VALUE&dateTimeRenderOption=FORMATTED_STRING"
+ "&majorDimension=COLUMNS");
expect(method).toEqual('GET');
};
/**
* 異常系のテスト
* @param func
* @param errorMsg
*/
const assertError = (func, errorMsg) => {
let failed = false;
try {
func();
} catch (e) {
failed = true;
expect(e.message).toEqual(errorMsg);
}
if (!failed) {
fail('No error was thrown.');
}
};
/**
* GET API リクエストでエラーになる場合
*/
test('GET Failed', () => {
prepareConfigs(configs, '12345abcde', 'sheet1', 'C1:C3', 'E1:E3');
httpClient.setRequestHandler((request) => {
assertGetRequest(request, '12345abcde', 'sheet1', 'C1:C3', 'E1:E3');
return httpClient.createHttpResponse(400, 'application/json', '{}');
});
//