2022-03-23
(C) Questetra, Inc. (MIT License)
2
Delete files or folders on Google Drive.
You can delete multiple files or folders at once.
When you delete multiple ones, you should write one file / folder ID on each line.
Google ドライブ上のファイルやフォルダを削除します。
一度に複数の削除が可能です。
複数削除する場合、データ項目では1行につき1つずつ ID を書くようにしてください。
https://support.questetra.com/bpmn-icons/googledrive-folderdelete/
https://support.questetra.com/ja/bpmn-icons/googledrive-folderdelete/
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADLUlEQVRYR2NkYGBgZBhAALJ81AFE
hUBmYabNj19/dglzM7ERirGerpkshNTA5ImOgvTClGu/fjEq5AfeYdeX+YrT0cv2S3y69kjgVGv7
IjdiHEGUAzKK0nKf8X9peyz5ntv5jty/7qTzTPgML51n+O/rbyaH6f3TjxByBFEOSMxO/XZB/wnH
d6k/DGpnRb82WT/nwhcKF59w/5++VfnmzP45WhQ7IL0wdfZzga8Rt4xfc4MM43zGwkBMKICi4vBt
idoZfbMm43ME3hAAJbx/DL9nHXR+qAEzBOQA2eeCBEMBpD5psv6P+VNnc5HtgOrKuF2XOf5YwnyP
7oiN4XfAoYILEJMgcYYAyPdPBT5uR7ccFg2gUAgX+/I3yvEFHyUJEqcDQNnulOZTDVDCQwegaAAB
g4syPwhlS1CCXL1Xdi+ubInVAbBsh833yNEAcgAb2/8HM9IvwdMIttDAlyAxHIAt4WEzFJQdJT9w
rwDJ2am9DMUXFfiyJYYD0LMdNstBUQDyPSyFg8qJebkXOQglyEO3xFfP7J+diqwOxQGk+F7qI08V
LI+DosxW9UUzoQQJypYcbCxuyCUkigPwJTzkuDe7Ln0DvZQD6c30vqtOqIRET5BwBxCT8ECOsN8r
f4OJgTUNvZyHhR6pCRLuAOTyHldcwhIeejzC1IPSDyhBBuvu42MXwV4NoGdLsAOISXj4fA9zACwU
JgavwJktQQ4DZUtYgoQ6AHehAzMc5HvhV9zM/xkl/uFL7SA5xv8vmAg1XD7//nsLlI7ADiAm/i23
K/y48ywQnNXY9S0ZePlx1zGfP37D60aZN33fONheVoJyETwN4MsBIN+/vxADrngIWU4odDjeH/vP
93kpvK0AdwCszXfc8wFKgQKyXOi1MuPdp5ZclFoOchz/3ZZvnKxvPGC5CK0cwGx8gEo8UNBTw3KI
75fNQ85FGEUxLDvCajtqWQ5KF8ofSzEKMAwHwBIkyAGgoH8iUsSFL8ERinOYPCjoYQkPZ12AKFBS
rj0X+Cb77f9UbmpYjp7wCDoAlCC//xbZQazviFGHnPAIOoAYA6mlhqh+AbUsw2bOgDsAAHEO2FDM
6/Q2AAAAAElFTkSuQmCC
{
const idDef = engine.createDataDefinition('フォルダ ID', 3, 'q_folderId', 'STRING_TEXTAREA');
configs.putObject('FileIdsItem', idDef);
engine.setData(idDef, ids);
return idDef;
};
/**
* 設定の準備
* @param configs
* @param ids
* @return {Object}
*/
const prepareConfigs = (configs, ids) => {
const quser = engine.createQuser(3, 'サウスポール', 'SouthPole@questetra.com');
configs.putObject('UserID', quser);
return prepareIdsConfig(configs, ids);
};
test('IDs is null', () => {
prepareConfigs(configs, null);
try {
execute();
fail('not come here');
} catch (e) {
expect(e.message).endsWith('File / Folder IDs aren\'t set.');
}
});
test('IDs is blank', () => {
prepareConfigs(configs, '\n\n\n'); //空行が複数行あるだけ
try {
execute();
fail('not come here');
} catch (e) {
expect(e.message).endsWith('File / Folder IDs aren\'t set.');
}
});
test('Number of IDs are over the limit', () => {
let ids = '';
for (let i = 0; i <= httpClient.getRequestingLimit(); i++) {
ids += 'aaaaa\n';
}
prepareConfigs(configs, ids);
try {
execute();
fail('not come here');
} catch (e) {
expect(e.message).endsWith('Number of File IDs is over the limit.');
}
});
test('User not found', () => {
configs.put('UserID', '3'); // UserID は空ではないが、対応する QuserView がない状態
prepareIdsConfig(configs, '12345');
try {
execute();
fail('not come here');
} catch (e) {
expect(e.message).endsWith('User not found');
}
});
/**
* リクエストのテスト
* @param method
* @param contentType
* @param body
* @param name
* @param parentId
*/
const assertRequest = ({url, method, contentType, body}, id) => {
expect(url).toEqual(`https://www.googleapis.com/drive/v3/files/${id}?supportsAllDrives=true`)
expect(method).toEqual('PATCH');
expect(contentType).toEqual('application/json; charset=UTF-8');
const bodyObj = JSON.parse(body);
expect(bodyObj.trashed).toEqual(true);
};
test('Succeed to delete multiple files folders', () => {
let ids = '';
for (let i = 0; i < httpClient.getRequestingLimit(); i++) {
ids += `f${i}\n`;
}
prepareConfigs(configs, ids);
let requestCount = 0;
httpClient.setRequestHandler((request) => {
assertRequest(request, `f${requestCount++}`);
return httpClient.createHttpResponse(200, 'application/json', '{}');
});
execute();
expect(requestCount).toEqual(httpClient.getRequestingLimit());
});
test('Failed to delete file folder', () => {
let ids = '';
for (let i = 0; i < 2; i++) {
ids += `000${i}\n`;
}
prepareConfigs(configs, ids);
let requestCount = 0;
httpClient.setRequestHandler((request) => {
try {
assertRequest(request, `000${requestCount}`);
if (requestCount === 1) {
return httpClient.createHttpResponse(400, 'application/json', '{}');
} else {
return httpClient.createHttpResponse(200, 'application/json', '{}');
}
} finally {
requestCount++;
}
});
try {
execute();
fail('not come here');
} catch (e) {
expect(e.message).endsWith('Failed to delete: 0001\nstatus: 400');
}
});
]]>