LANG SELRCT

Apps Script Reference  (Create: Create new Spreadsheet | Create new Apps Script

Thursday, April 18, 2024

スプレッドシートA列にある複数のテキストをスライドに追加したい(Google Apps Script)

今回Google Apps Scriptでやりたいこと


GoogleスプレッドシートA列にある複数の値を取得して
Googleスライドに渡して
図形オブジェクトのテキストとして追加したい



① スプレッドシートのA列に値を入れておく
② Code.gsのinsertNewShape()を実行すると、スライドの左上に図形が重なって追加される
③ 図形を選択して手動で動かして好きなように配置し直す

Google Apps Scriptでスライドのページを指定して複数の図形を追加したい(Google Apps Script) では、values をコード内に書きましたが、スプレッドシートから値を持って来たくて書いたコードです。



Code.gs
const sheetUrl = "https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit#gid=0";
const sheet = SpreadsheetApp.openByUrl(sheetUrl).getSheets()[0];
const values = sheet.getDataRange().getValues().flat();

const slideUrl = "https://docs.google.com/presentation/d/SLIDE_ID/edit#slide=id.p";
const pageId = slideUrl.split("slide=id.")[1];
const slide = SlidesApp.openByUrl(slideUrl);
const pages = slide.getSlides();
const pageIndex = findPageIndex(pages, pageId);
const page = slide.getSlides()[pageIndex];

function insertNewShape() {
for(let i = 0; i < values.length; i++) {
const rect = page.insertShape(SlidesApp.ShapeType.RECTANGLE)
.setWidth(120)
.setHeight(30)
.setTop(0)
.setLeft(0);
rect.getText().setText(values[i])
.getTextStyle().setFontSize(12);
rect.getFill().setSolidFill("#C9DAF8");
}
}

function findPageIndex(pages, pageId) {
let pageIndex;
for(let i = 0; i < pages.length; i++) {
if(pages[i].getObjectId() === pageId) {
pageIndex = i;
}
}
return pageIndex;
}



Reference


2次元配列を1次元配列にしたい(.flat)


mapやArray.prototype.push.applyでも同じようなことをやっていましたが、よりシンプルなflatで書いたコードです。



var arrays = [[123], [456], [789]]




こうしたい

 [123 456, 789]




Code.gs
function getFlat() {
var arrays = [[123], [456], [789]];
var values = arrays.flat();
Logger.log(values);
}


実行ログ
[123.0, 456.0, 789.0]



Reference

Array.prototype.flat()




Monday, April 15, 2024

Google Apps Scriptでスライドのページを指定して複数の図形を追加したい(Google Apps Script)


Googleスライドのページを指定して、 複数の図形(とテキスト)を追加したくて書いたコードです。



Code.gs
const values = ["hello", "hey", "hi"];
const url = "https://docs.google.com/presentation/d/SLIDE_ID/edit#slide=id.p";
const pageId = url.split("slide=id.")[1];
const slide = SlidesApp.openByUrl(url);
const pages = slide.getSlides();
const pageIndex = findPageIndex(pages, pageId);
const page = slide.getSlides()[pageIndex];

function insertNewShape() {
for(let i = 0; i < values.length; i++) {
const rect = page.insertShape(SlidesApp.ShapeType.RECTANGLE)
.setWidth(120)
.setHeight(30)
.setTop(0)
.setLeft(0);
rect.getText().setText(values[i])
.getTextStyle().setFontSize(12);
rect.getFill().setSolidFill("#C9DAF8");
}
}

function findPageIndex(pages, pageId) {
let pageIndex;
for(let i = 0; i < pages.length; i++) {
if(pages[i].getObjectId() === pageId) {
pageIndex = i;
}
}
return pageIndex;
}



図形の中に入れたい文字をvaluesに入れます。
図形を追加したいスライドのURLを url に入れます。

const values = ["hello", "hey", "hi"];
const url = "https://docs.google.com/presentation/d/SLIDE_ID/edit#slide=id.p";



insertNewShape() を実行すると、以下のように左上端に図形が追加されます。
同じ位置に3つの図形を追加しているため見た目は上の画像のように一つですが、

一つずつ選択して位置をずらすと下の画像のように確認できます。


Reference



Google Apps Scriptでスライド内のページIDを取得したい(.getObjectId)


GoogleスライドのURL末尾にあるslide=id.に続くidを取得したくて書いたコードです。


サンプルのURL→ https://docs.google.com/presentation/d/SLIDE_ID/edit#slide=id.g2cc2c94e9c6_0_0





Code.gs
function getPageIds() {
const url = 'https://docs.google.com/presentation/d/SLIDE_ID/edit#slide=id.p';
const slide = SlidesApp.openByUrl(url);
const pages = slide.getSlides();
const pageIds = [];
for(let i = 0; i < pages.length; i++) {
const pageId = pages[i].getObjectId();
pageIds.push(pageId);
}
Logger.log(pageIds)
}



実行結果


サンプルのスライドには5枚存在するため、5つのidがログに出ています。
1枚目のidは p になるらしい。



Reference

Class Page > getObjectId() 

Wednesday, April 10, 2024

英文から不要な記号を削除したい(正規表現)


今回やること


Hello, how's it going?


から不要な , と ? を削除して


Hello how's it going


にする。

Latest post

スプレッドシートA列にある複数のテキストをスライドに追加したい(Google Apps Script)

今回Google Apps Scriptでやりたいこと GoogleスプレッドシートA列にある複数の値を取得して Googleスライドに渡して 図形オブジェクトのテキストとして追加したい ① スプレッドシートのA列に値を入れておく ② Code.gsのinsertNewShape...