伊莉討論區

標題: 如何使用GAS抽出獨立文本 [打印本頁]

作者: monny2311    時間: 2019-5-29 01:41 PM     標題: 如何使用GAS抽出獨立文本

希望可以透過GAS(google apps script),使用ID指定活頁簿,並於活頁簿內各分頁進行相同操作(抽出所有獨立文本[與excel的unique函數一樣,重複的情況只抽出一個],並於存在文本的最終列後新插入一行,輸出所有獨立文本)。本人對IT沒有基礎認識,只能透過網上教學詢問,目前只能做到抽出非重複文本,但重複的文本直接被去掉了。
這次主要是因為平常需要翻譯文本,希望可以把unique的函數透過GAS增加效率,希望大大們能解答一下。

附上目前的code
    function main () {
        const TARGET_SHEET_ID = "1QFk5Ce7llVvHYgxK8lStWkj2dqfGMx_jms2FLBhFvpc";
        const SSLink = SpreadsheetApp.openById(TARGET_SHEET_ID);
        const sheets = SSLink.getSheets();
        const uniqueDataObject = {};
        sheets.forEach(function(sheetObject){
            const rengeList = getSheetValues(sheetObject);
            margeUniqueObjectData(uniqueDataObject , findUniqueDataObject(rengeList));
        });
        Logger.log(uniqueDataObject);
        const convertedKeyArray = objectKeyToArray(uniqueDataObject);
        Logger.log(convertedKeyArray);
    }

    function getSheetValues(sheet , targetColumn , targetLow) {

        if(!targetColumn)targetColumn = 1;
        if(!targetLow)targetLow =sheet.getLastRow();
        const columnRange = sheet.getRange(1,targetColumn,targetLow,2);
        const rangeValueDataMultipleList =[].concat.apply([], columnRange.getValues());
        return rangeValueDataMultipleList;
    }

    function findUniqueDataObject(rangeValueDataMultipleList) {
        const tempUniqueDataObject = {};
        const uniqueDataObject = {};
        const FIND =true;
        rangeValueDataMultipleList.forEach(function(str){
            if(tempUniqueDataObject[str] === FIND){
                delete uniqueDataObject[str];
            }else{
                tempUniqueDataObject [str] = FIND;
                uniqueDataObject[str] = FIND;
            }
        });
        return uniqueDataObject ;
    }

    function margeUniqueObjectData(lastUniqueDataObject , uniqueDataObject){
        const FIND =true;
        if(uniqueDataObject)
            for(var key in uniqueDataObject){
                if(lastUniqueDataObject[key]){
                    delete lastUniqueDataObject[key]
                }else{
                    lastUniqueDataObject[key] = FIND;
                }
            }
    }

    function objectKeyToArray(convertObject){
        var convertedKeyArray = [];
        if(convertObject){
            convertedKeyArray =Object.keys(convertObject);
        }
            return convertedKeyArray;
    }







歡迎光臨 伊莉討論區 (http://www1.eyny.com/) Powered by Discuz!