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'); } }); ]]>