2022年3月15日火曜日

GoogleGasでドキュメント情報をスプレッドシートに自動入力するスクリプト

唐突ですが皆さんはスプレッドシートを活用していますでしょうか?
作業に内容を把握するのにリストって重要ですよね。

最近私は下画像のような文章を4桁文字、作業内容に分けて
セル一つ一つにコピペして入力しておりました。
画像は結構シンプルですが実際はもっとごちゃついています。
             
さすがにめんどくさかったので上の4桁文字作業内容の二つの情報をリストに自動で入力していくようなスクリプトを考えました。

別に深く解説できるほど理解してないので備忘録的な感じです😇



まずは情報を取得したいので下準備。

function myFunction2() {
//ドキュメント操作
//ここにドキュメントidを入力
  var doc = DocumentApp.openById(`1UKuYZuczmyJl7MZ6p4c7ZEtKyVec4s-Buf7AJODT3qw`);
  var body = doc.getBody();
  var values= []; 
  var paragraghs =body.getParagraphs();
  paragraghs.forEach(function(paragraph){
    var text =paragraph.getText();
    var deltexts =text.match(/    /)  
    //(/    /)は入力指定した以降を削除
    //|をつかって複数入力も可能。例(/a|b/)
    var record =[
      text.slice(0,4),
      text.slice(5,text.indexOf(deltexts))  
    ];
    values.push(record);  
})
//必ず一度確認
console.log(values)
}

やっていることはgoogleドキュメントのテキスト情報を1段落ずつ取得し

sliceで手前4文字情報を取得、
さらにsliceで6文字目から情報を取得、
指定した文字情報以降の削除(今回は空白以降を削除)しています。

その2つの情報をvaluesに格納?しています。


こうしてできた情報を確認してみると



無事取得したい情報を分けることができました。

あとはセルに入力するだけです。
指定したセルから順に入力してくれる処理を追加して
出来上がったスクリプトがこちらです。

function myFunction2() {
//ドキュメント操作
//ここにドキュメントidを入力してください
  var doc = DocumentApp.openById(`1UKuYZuczmyJl7MZ6p4c7ZEtKyVec4s-Buf7AJODT3qw`);
  var body = doc.getBody();
  var values= []; 
  var paragraghs =body.getParagraphs();
  paragraghs.forEach(function(paragraph){
    var text =paragraph.getText();
    var deltexts =text.match(/    /)  
    //テキストの中の情報を分ける
    var record =[
      text.slice(0,4),
      text.slice(5,text.indexOf(deltexts))  
    ];
    values.push(record);  
})
//必ず一度確認すること
console.log(values)

//セル操作
    var ss =SpreadsheetApp.getActiveSpreadsheet();
    //コピーしたいシートを入力
    var sheet = ss.getSheetByName(`test`);
    sheet.getRange(2,1,values.length,values[0].length).setNumberFormat("@").setValues(values)  
}

結果

無事入力することができました🙌


また今回はしませんでしたが
recordの部分に情報を追加すればurl部分、日付も取得して入力できます。
まだまだ良い方法はあるんでしょうけど幾分手入力よりは楽です!

ほかにもGoogleGasには色々な使い方ができるらしいので興味のある方は調べてやってみればより業務が捗ること間違いなしですね👍

以上😪