【Googleスプレッドシート】PythonやRPAでスプレッドシートを編集・操作する方法

GAS
ホーム » GAS » 【Googleスプレッドシート】PythonやRPAでスプレッドシートを編集・操作する方法

■対象者

RPAやPython、Power Automateでスプレッドシートのデータを編集・操作したい方

業務自動化にGAS以外の方法でスプレッドシートのデータを活用したい方

業務自動化・効率化に興味のある方

■スプレッドシートをRPA・Power Automate・Pythonなどで扱う方法

[GAS]GAS(GoogleAPI)の始め方
通常スプレッドシートはGoogleのコンテンツになるので、GAS(Google Apps Script)でしか
編集・操作はできません。
有償のライセンスをしようすれば、Pythonなどでも編集はできます。

無料で利用するにはスプレッドシートを一度エクセルに変換しましょう。

具体的な流れとしては下記になります。

①操作したいスプレッドシートを決めます。
②GASでエクセルファイルに変換します。
③そのエクセルファイルのデータをPower AutomateやPythonで操作します。
④編集が終わってスプレッドシートに反映させたい場合はエクセルファイルに変換します。

以上になります。

下記に②、④のGASのコードを載せておきます。
また、上記の操作を実施する場合はGoogleDriveアプリケーションを使用することをお勧めします。

スプレッドシートをエクセルに変換するコード

function myFunction() {
var id = “(スプレッドシートのID)“;
var excel_file = ss2xlsx(id);
if (excel_file !== undefined) {
Logger.log(“Name:” + excel_file.getName());
}
}

//SpreadsheetをExcelファイルに変換してドライブに保存、Fileを返す
function ss2xlsx(spreadsheet_id) {
var new_file;
var url = “https://docs.google.com/spreadsheets/d/” + spreadsheet_id + “/export?format=xlsx”;
var options = {
method: “get”,
headers: {“Authorization”: “Bearer ” + ScriptApp.getOAuthToken()},
muteHttpExceptions: true
};
var res = UrlFetchApp.fetch(url, options);
if (res.getResponseCode() == 200) {
var ss = SpreadsheetApp.openById(spreadsheet_id);
new_file = DriveApp.createFile(res.getBlob()).setName(ss.getName() + “.xlsx”);
}
return new_file;
}

上記コードを実施すると、問題が無ければ同名のExcelファイルがドライブ上に作成されます。
※黄色の部分のみ対象スプレッドシートのスプレッドシートIDを入力してください。
 docs.goggole.com/spreadsheets/d/この部分/edit?pli~~

エクセルファイルをスプレッドシートに変換するコード

こちらのケースの場合DriveApiを使用します。
なんとなく、使うんだ~程度で問題ありません。
設定方法は下記になります。
GASw開いて「サービスを追加」を選択します。

Drive APIドキュメントを選択して「追加」で完了となります。

あと一つだけ準備するものがあります。
それがフォルダIDとなります。
スプレッドシートに変換した場合どこに格納するかというのを指定するものになります。
下記画像の黄色の部分になります。

■実際の変換コード

function convertExcel()  {
  //変換するExcelファイル
  let excelFileId = 'XXXXX'
 
  //スプレッドシート出力先フォルダー
  let destFolderId = 'XXXXX'
 
  //ExcelファイルをファイルIDで取得
  var excelFile = DriveApp.getFileById(excelFileId)
 
  //Excelファイル名取得
  var fileName = excelFile.getName()
  Logger.log(fileName)
 
  var option =  {
    mimeType:MimeType.GOOGLE_SHEETS,   //Google sheets
    parents:[{id:destFolderId}],                       //出力先フォルダー
    title:fileName                                          //出力先ファイル名
  }
  Drive.Files.insert(option,excelFile)
}

変換するエクセルファイルの部分にはスプレッドシートIDを
スプレッドシート出力先フォルダーの部分にはフォルダIDを入力してもらえればと思います。

最後に

意外とスプレッドシートのデータを変換してPower AutomateやPythonで利用したい場合は
多かったので、記録として残しておきます。

[Chat GPTでGAS]Chat GPTを使用してGAS(Google Apps Script)を作成してみた。

[Chat GPTでPython]Chat GPTを使用してPythonプログラム作成してみた。

タイトルとURLをコピーしました