第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Google Sheets Apps 腳本根據未知數量的行中的過濾關鍵字移動特定行

使用 Google Sheets Apps 腳本根據未知數量的行中的過濾關鍵字移動特定行

幕布斯6054654 2023-07-14 15:08:25
我做搜索引擎優(yōu)化,因此我有很多關鍵字在不同的電子表格中流動。我想要一種方法來根據特定的過濾器將這些過濾到單獨的工作表中,但我一生都無法弄清楚如何在 Google Apps 腳本中執(zhí)行此操作。我為自己設定的標準是:在第 1+2 列中輸入字符串及其相應卷的列表。過濾詞列表寫在第 3 列中。該腳本必須為每個過濾詞創(chuàng)建一個新工作表,如果字符串包含過濾詞,則將字符串+卷移動到這些不同的工作表中。示例:過濾詞:Apple, Banana, Pineapple字符串:“蘋果很大”,卷:“100”該腳本會將字符串和音量移動到第 1 行名為“Apple”的工作表中(請注意,我在編碼方面毫無經驗)我相信您可以使用以下結構:for(let i = 0; i <= column3RowAmount; i++){ //Run as long as there are more filter words   create(column3Row[i]); //create a new sheet with the name of the filter word   for(let j = 0; j <= column1RowAmount; j++){ //Run as long as there are more keywords      if(column1Row[j].indexOf(column3Row[i]) >= 0){ //If the Row in column 1 contains the filter word         column1Row[j].moveToSheet(column3Row[i]); // Make sure not to move Column 3, but only 1+2      }   }}示例表:https://docs.google.com/spreadsheets/d/15YIMyGmmfZdy094gwuJNxFmTd8h7NOLnA8KevZrGtdU/edit? usp=sharing
查看完整描述

2 回答

?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

解釋:

  • 您的目標是為C列中的每個過濾詞創(chuàng)建一個工作表。然后將A、B列中的數據復制到相應的工作表中,但僅復制包含過濾詞的行。

  • 對于初學者,您需要獲取過濾詞列表。您可以獲得C列的完整范圍并過濾掉空單元格:

    const?sh_names?=?sh.getRange('C1:C').getValues().flat().filter(r=>r!='');
  • 同樣,您需要獲取A列和B列中的數據:

    const?data?=?sh.getRange('A1:B'+sh.getLastRow()).getValues();
  • 下一步是迭代sh_names每個元素/過濾詞,檢查是否存在具有該名稱的工作表。如果不存在,則創(chuàng)建一個具有該名稱的工作表,如果存在則跳過創(chuàng)建部分:

    ??if(!ss.getSheetByName(s)){
    ??ss.insertSheet().setName(s);}
  • 下一步是過濾包含過濾詞data的行:

    let?f_data?=?data.filter(r=>r[0].includes(s));
  • 最后檢查數據的長度是否大于0,否則沒有數據可使用,并將 的值設置data到相應的sheet中:

    sheet.getRange(sheet.getLastRow()+1,1,f_data.length,f_data[0].length).setValues(f_data)

解決方案

function myFunction() {

? const ss = SpreadsheetApp.getActive();

? const sh = ss.getSheetByName('Ark1');

? const filter_sh = ss.getSheetByName('Filter');

? const data = sh.getRange('A1:B'+sh.getLastRow()).getValues();

? const sh_names = filter_sh.getRange('A1:A'+filter_sh.getLastRow()).getValues().flat();

? sh_names.forEach(s=>{

? ? if(!ss.getSheetByName(s)){

? ? ss.insertSheet().setName(s);}

? ? let sheet = ss.getSheetByName(s);? ?

? ? let f_data = data.filter(r=>r[0].includes(s));

? ? if(f_data.length>0){

? ? sheet.getRange(sheet.getLastRow()+1,1,f_data.length,f_data[0].length).setValues(f_data);}

});?

}


查看完整回答
反對 回復 2023-07-14
?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

此函數會將所有結果放入相應單詞旁邊的第 4 列,而不是為每個單詞創(chuàng)建一個頁面。所以它運行得更快。


function stringswords() {

  const ss=SpreadsheetApp.getActive();

  const sh=ss.getSheetByName('Sheet1');

  const sr=2;

  const rgd=sh.getRange(sr,1,sh.getLastRow()-sr+1,2);

  const data=rgd.getDisplayValues();

  const rgw=sh.getRange(sr,3,sh.getLastRow()-sr+1,1);

  const words=rgw.getDisplayValues().flat();

  const wiObj={};

  words.forEach(function(w,i){wiObj[w]=i});

  const rgr=sh.getRange(sr,4,sh.getLastRow()-sr+1,1);

  rgr.clearContent();

  var results=rgr.getValues();

  words.forEach(function(w,i,A){

    data.forEach(function(r,j,D) {

      if(data[j][0] && data[j][0].indexOf(w)!=-1) {

        results[wiObj[w]][0]+=Utilities.formatString('String:%s Vol:%s\n',data[j][0],data[j][1]);

      }

    });

  });

  rgr.setValues(results);

}

數據和輸出圖像:

http://img1.sycdn.imooc.com//64b0f49e0001744a06540229.jpg

查看完整回答
反對 回復 2023-07-14
  • 2 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號