How to delete all form setting in pre-live setting?

I tried delete form setting in pre-live setting with api ‘/k/v1/preview/app/deploy.json’ with param:
{'apps': [{ 'app': XX, 'revision': newest_number }], 'revert': true} .

But pre-live form setting did not delete.
Which way can i resolve this problem?
Thanks!

Hello Tan,

The API that you are using is the one.
I don’t know the problem with the given information, so could you send a full script and the error you see?

Thank you

Hello Chris,

I don’t know my code didn’t work yesterday. Today, it run correct.

This is my code:

(function (){
    'use strict';
    let deploy_button = create_element('button', {
        class: 'css-button detail'
    }, 'デプロイ')

    let leave_page = true

    kintone.events.on('app.record.detail.show', function (event) {
        var record_id = event.record.$id.value
        let header_menu = kintone.app.record.getHeaderMenuSpaceElement();
        let product_app_id = ''
        let print = ''
        let revision = 0
        let record = {}
        header_menu.appendChild(deploy_button)
        window.onbeforeunload = function() {if (leave_page) return; else return 'app is deploying'}
        deploy_button.onclick = async function(e) {
            leave_page = false
            page_wait.hidden = false
            try {
                record = await kintone.api(kintone.api.url('/k/v1/record', true) + `?app=${event.appId}&id=${record_id}`, 'GET', {})
                product_app_id = record.record['product_app_id'].value
                revision = record.record['revision'].value
                let info = new information(record.record)
                let create_info = await info.dev_app
                if (!product_app_id) {
                    // use kintone.proxy to add header to api
                    let sub_headers = Object.assign({}, header_pro)
                    sub_headers['Accept-Language'] = !create_info[0].properties['Status']? 'ja':'en'
                    sub_headers['Content-Type'] = 'application/json'
                    await kintone.proxy(kintone.api.url(`/${add_preview_app}`, true), 'POST', sub_headers, {name:record.record['app_name'].value})
                    .then(resp => {
                        if (resp[1] === 200) {
                            product_app_id = JSON.parse(resp[0])['app']
                        let record_data = {
                            app: event.appId,
                            id: record.record.$id.value,
                            record: {
                                product_app_id: {
                                    value: product_app_id
                                },
                            }
                        }
                        return kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', record_data)  
                        }
                        else throw new Error('0, Product environment can\'t create app')
                    }).then (resp => console.log('update product_app_id success'))
                    .catch(error => {
                        throw new Error('0, Can\'t update product_app_id for record')
                    })
                }
                let product_info = await info.pro_app
                // set appid for field lookup
                let table_lookup = record.record['field_lookup'].value
                if (!!table_lookup[0].value['field_code'].value) {
                    for (let row of table_lookup) {
                        create_info[0].properties[row.value['field_code'].value].lookup.relatedApp.app = row.value['lookup_app_id'].value
                    }
                }                   

                // check built-in icon
                if (create_info[4].icon.type === 'FILE') {
                    delete create_info[4].icon
                    delete product_info[4].icon
                }

                remove_properties(create_info[3], 'assignee')
                let put_form = {} 
                let add_form = {}
                let delete_form  = []

                if (revision === '0') {
                    // check change built-in field
                    for (let e of Object.keys(create_info[0].properties)) {
                        if (built_in_type.includes(create_info[0].properties[e].type)) {
                            put_form[e] = create_info[0].properties[e]
                            delete create_info[0].properties[e]
                        }  
                    }
                    add_form = create_info[0].properties
                }
                else {
                    remove_properties(product_info[3], 'assignee')
                    remove_properties(product_info[2], 'id')
                    remove_properties(create_info[2], 'id')
                    let diff_obj = diff(product_info[0].properties, create_info[0].properties)
                    let diff_app = diff(product_info.slice(0,5), create_info.slice(0,5))
                    remove_properties(diff_app, '(Assigned to me)')
                    print = Object.keys(diff_app).map(e => obj_to_textarea(diff_app[e])).join('')
                    if (Object.keys(diff_obj).length !== 0) {
                        let gen_add_del = add_delete(diff_obj)
                        for (let e of gen_add_del) {
                            if (!e['add']) {
                                delete_form.push(e['delete'])
                            }
                            else {
                                add_form[e['add']] = create_info[0].properties[e['add']]
                                delete create_info[0].properties[e['add']]
                            }
                        }
                        put_form = Object.assign({}, put_form, create_info[0].properties)
                    }
                    if(print === '') {
                        alert('app updated newest')
                        page_wait.hidden = true 
                        return;
                    }
                    print = print.slice(1,)
                }

                let deploy_body = {apps:[{ app: product_app_id,}],}
                let create_data = {
                    create_form : {
                        app: product_app_id,
                        properties: add_form
                    },
                    put_form: {
                        app: product_app_id,
                        properties: put_form
                    },
                    delete_form: {
                        app: product_app_id,
                        fields: delete_form
                    },
                    create_layout : {
                        app: product_app_id,
                        layout: create_info[1].layout
                    },
                    create_views : {
                        app: product_app_id,
                        views: create_info[2].views
                    },
                    create_process : {
                        app: product_app_id,
                        states: create_info[3].states,
                        actions: create_info[3].actions,
                        enable: create_info[3].enable
                    },
                    create_general: {
                        app: product_app_id,
                        name: create_info[4].name,
                        description: create_info[4].description,
                        icon: create_info[4].icon,
                        theme: create_info[4].theme
                    },
                    create_customization: {
                        app: product_app_id,
                        scope: create_info[5].scope,
                        desktop: create_info[5].desktop,
                        mobile: create_info[5].mobile
                    }
                    
                }

            
                await set_key(create_info[5], info)
                if (Object.keys(add_form).length !== 0) {
                    await info.change_setting(preview_form_field, create_data.create_form, 'POST')
                }
                if (Object.keys(delete_form).length !== 0) {
                    await info.change_setting(preview_form_field, create_data.delete_form, 'DELETE')
                }
                if (Object.keys(put_form).length !== 0) {
                    await info.change_setting(preview_form_field, create_data.put_form, 'PUT')
                }
                await info.change_setting(preview_form_layout, create_data.create_layout, 'PUT')
                await info.change_setting(preview_process_management, create_data.create_process, 'PUT')
                await info.change_setting(preview_views, create_data.create_views, 'PUT')
                await info.change_setting(preview_general_setting, create_data.create_general, 'PUT')
                await info.change_setting(preview_customization, create_data.create_customization, 'PUT')

                await kintone.api(kintone.api.url('/k/v1/preview/app/deploy.json', true), 'POST', deploy_body).then(resp => revision = Number(revision) + 1,
                error => {throw new Error(error.message)})
                alert('App deployed success')
            }
            catch (error) {
                if (error.message.slice(0,1) === '0') {
                    alert(error.message.slice(3,))
                }
                else {
                    let deploy_body = {apps:[{ app: product_app_id,}], revert: true}
                    kintone.api(kintone.api.url('/k/v1/preview/app/deploy.json', true), 'POST', deploy_body)
                    alert(error.message.slice(3,) + 'app deployed failplease try again')
                }
                page_wait.hidden = true
                return;
            }
            record.record['revision'].value = revision
            let new_row = {
                value: {
                    deploy_number: {
                        value: revision
                    },
                    sub_content_deploy: {
                        value: record.record['content_deploy'].value
                    },
                    change_setting: {
                        value: print || 'first deploy'
                    },
                    deploy_user: {
                        value: kintone.getLoginUser().code
                    },
                    sub_backlog_url: {
                        value: record.record['backlog_url'].value || ''
                    },
                    deploy_date: {
                        value: date_to_string(new Date())
                    }
                }
            }
            if (revision===1) record.record['history_deploy'].value = [new_row]
            else record.record['history_deploy'].value.push(new_row)
            let record_data = {
                app: event.appId,
                id: record.record.$id.value,
                record: {
                    revision: {
                        value: revision
                    },
                    history_deploy: {
                        value: record.record['history_deploy'].value
                    }
                }
            }
            kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', record_data).then(resp => console.log('update product id success'), 
                error => console.log('update product id fail'))
            page_wait.hidden = true   
            leave_page = true 
        }
    })
})();

 

Thank you for your support.

Hello Tan,

/k/v1/preview/app/deploy.json part in the script looks fine to me.
I’m not sure what the problem was, but I’m glad it worked out.

Best,
Chris

1 Like