Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 谷歌应用脚本子字符串_Google Apps Script_Google Sheets_Google Docs - Fatal编程技术网

Google apps script 谷歌应用脚本子字符串

Google apps script 谷歌应用脚本子字符串,google-apps-script,google-sheets,google-docs,Google Apps Script,Google Sheets,Google Docs,在我的电子表格中,我有一个存储在子文件夹中的图像的文件路径。图像是这样存储的,因为我正在使用appsheet.com为我的雇主制作一个应用程序。他们希望该应用程序使用AppSheet开发,AppSheet不允许将图像直接存储到用于构建这些应用程序的电子表格中 存储在电子表格中的数据也必须被提取并应用到模板中,我正在制作一个谷歌应用程序脚本来实现这一点。我有一个函数脚本,可以找到模板并提取用户选择的数据行,但我无法提取所需的图像 我一直在尝试创建文件路径的子字符串以获取文件名,但我无法做到这一点

在我的电子表格中,我有一个存储在子文件夹中的图像的文件路径。图像是这样存储的,因为我正在使用appsheet.com为我的雇主制作一个应用程序。他们希望该应用程序使用AppSheet开发,AppSheet不允许将图像直接存储到用于构建这些应用程序的电子表格中

存储在电子表格中的数据也必须被提取并应用到模板中,我正在制作一个谷歌应用程序脚本来实现这一点。我有一个函数脚本,可以找到模板并提取用户选择的数据行,但我无法提取所需的图像

我一直在尝试创建文件路径的子字符串以获取文件名,但我无法做到这一点

在我试图创建子字符串的代码块中,我在
sig=signature.getText()行上得到一个错误。错误为
TypeError:signature.getText不是函数(第176行,文件“code”)

这是文件路径看起来像的
Signatures/FT101.Signed(%Signed%).103735.png
,我需要的子字符串看起来像这样
FT101.Signed(%Signed%).103735.png

我尝试了多种方法,这些方法是由关于堆栈溢出的其他问题提供的,以及Google Apps脚本参考中可用的任何潜在方法

以下函数从提示符获取用户输入,并使用它查找所需的行号。然后,它从该行获取数据,并根据数据所属的类别将其应用于模板

var response = {};
var sign = "";

function chooseRowMethod(templateId){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var dataRange = sheet.getDataRange();
  var values = dataRange.getValues();
  var data = sheet.getRange(2, 2, 11, 18).getValues();//starting with row 2 and column 1 as our upper-left most column, get values from cells from 1 row down, and 15 columns along - hence (2,1,1,15)
  var docTitle = sheet.getRange(2, 2, 11, 1).getValues();//this is grabbing the data in field B2
  var docTitleTagNumber = sheet.getRange(2, 3, 11, 1).getValues();
  var today = new Date();
  var dd = today.getDate();
  var mm = today.getMonth() + 1;
  var yyyy = today.getFullYear();
  today = dd + '/' + mm + '/' + yyyy;

  for(var i = 0; i < values.length; i++){
    for(var j = 0; j < values[i].length; j++){
      if(values[i][j] == response){
        Logger.log(i);
        var row = data[i - 1];
        var docId = DriveApp.getFileById(templateId).makeCopy().getId();

        var doc = DocumentApp.openById(docId);
        var body = doc.getActiveSection();
        body.replaceText("%SITEID%", row[0]);
        body.replaceText("%TAG%", row[1]);
        ...
        body.replaceText("%SAT%", row[14]);

        var signature = sheet.getRange(2, 18, 11, 1).getValues();
        var sig;
        var sign = {};

        for(var i = 0; i < values.length; i++){
          for(var j = 0; j < values[i].length; j++){
            if(values[i][j] == response){
              sig = signature.getText();
              sign[i][0] = sig.substring(sig.indexOf("/") + 1);
            }
          }
        }

        var sigFolder = DriveApp.getFolderById("1LiJKGjTbpvRZ5RrMTQoyTuAjrozA14FN");

        var file = sigFolder.getFilesByName(sign);
        var image = file.getId();

        body.appendImage(image);
        doc.saveAndClose();

        var file = DriveApp.getFileById(doc.getId());
        var newFolder = DriveApp.getFolderById("16wRGBVdV0OZ5YfKhqEQSFMsux-ekGCCa");
        newFolder.addFile(file); 
        var newDocTitle = docTitle[i - 1][0];
        var newDocTagNumber = docTitleTagNumber[i - 1][0];

        doc.setName(newDocTitle + " " + newDocTagNumber + " " + today);
      }
    }
  } 
}
var-response={};
var符号=”;
函数选择器方法(templateId){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var dataRange=sheet.getDataRange();
var values=dataRange.getValues();
var data=sheet.getRange(2,2,11,18).getValues();//从第2行和第1列开始,作为最左上方的列,从下1行和15列的单元格中获取值-因此(2,1,1,15)
var docTitle=sheet.getRange(2,2,11,1).getValues();//这是在抓取字段B2中的数据
var docTitleTagNumber=sheet.getRange(2,3,11,1).getValues();
var today=新日期();
var dd=today.getDate();
var mm=today.getMonth()+1;
var yyyy=today.getFullYear();
今天=dd+'/'+mm+'/'+yyyy;
对于(变量i=0;i
这就是我一直试图获得图像的地方

        var signature = sheet.getRange(2, 18, 11, 1).getValues();
        var sig;
        var sign = {};

        for(var i = 0; i < values.length; i++){
          for(var j = 0; j < values[i].length; j++){
            if(values[i][j] == response){
              sig = signature.getText();
              sign[i][0] = sig.substring(sig.indexOf("/") + 1);
            }
          }
        }

        var sigFolder = DriveApp.getFolderById("1LiJKGjTbpvRZ5RrMTQoyTuAjrozA14FN");

        var file = sigFolder.getFilesByName(sign);
        var image = file.getId();

        body.appendImage(image);
var signature=sheet.getRange(2,18,11,1).getValues();
var-sig;
var符号={};
对于(变量i=0;i
下一个函数为用户提供提示并应用正确的模板

function chooseRow(){
  var ui = SpreadsheetApp.getUi(); // Same variations.
  var result = ui.prompt('Please enter the Tag number of the row you wish to print.', ui.ButtonSet.OK_CANCEL);

  var button = result.getSelectedButton();
  response = result.getResponseText();
  if (button == ui.Button.OK) {
    // User clicked "OK".
    ui.alert('Your tag number is' + response + '.');
  } else if (button == ui.Button.CANCEL) {
    // User clicked X in the title bar.
    ui.alert('You closed the dialog.');
    return 'the end';
  }

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var dataRange = sheet.getDataRange();
  var values = dataRange.getValues();
  var category = sheet.getRange(2, 4, 11, 1).getValues();
  var templateId = {};

  for(var i = 0; i < values.length; i++){
    for(var j = 0; j < values[i].length; j++){
      if(values[i][j] == response && category[i - 1][0] == "Instrument"){
        templateId = "1cx2-6ju-o7DaRPnbuYxxdvVVFeGQzpTXaXV3wMuRpqo";
        chooseRowMethod(templateId);
        return "";
      } else if(values[i][j] == response && category[i][0] == "Motor" || values[i][j] == response && category[i][0] == "Valve"){
        templateId = "1sYx_JcoDHY-pzjEDlxMMa3dtdzOOE8CyyLGQk8WHg7s";
        chooseRowMethod(templateId);
        return "";
      }
    }
  }
}
函数选择器w(){
var ui=SpreadsheetApp.getUi();//相同的变体。
var result=ui.prompt('请输入要打印的行的标记号',ui.ButtonSet.OK\u CANCEL);
var button=result.getSelectedButton();
response=result.getResponseText();
if(button==ui.button.OK){
//用户单击“确定”。
ui.alert('您的标签号为'+response+');
}else if(button==ui.button.CANCEL){
//用户单击了标题栏中的X。
ui.alert('您关闭了对话框');
返回“结束”;
}
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
var dataRange=sheet.getDataRange();
var values=dataRange.getValues();
var category=sheet.getRange(2,4,11,1).getValues();
var templateId={};
对于(变量i=0;i
预期结果是文件pa的子字符串
var file = sigFolder.getFilesByName(sign);
var image = file.getId();
body.appendImage(image);
doc.saveAndClose();
var files=sigFolder.getFilesByName(sign);
var n=0;
while(files.hasNext()) {
  var file=files.next();
  n++;
}
if(n>1)SpreadsheetApp.getUi().alert('There is more than one file with this name: ' + sign);
var image = file.getId();
body.appendImage(image);
doc.saveAndClose();
var files=sigFolder.getFilesByName(sign);
if(files.hasNext())var file=files.next()
if(files.hasNext())throw('You have more than one file with this name: ' + sign);
var image = file.getId();
body.appendImage(image);
doc.saveAndClose();
function chooseRow(){
  var ui = SpreadsheetApp.getUi(); // Same variations.
  var result = ui.prompt('Please enter the Tag number of the row you wish to print.', ui.ButtonSet.OK_CANCEL);
  var button = result.getSelectedButton();
  response = result.getResponseText();
  if (button == ui.Button.OK) {
    // User clicked "OK".
    ui.alert('Your tag number is' + response + '.');
  } else if (button == ui.Button.CANCEL) {
    // User clicked X in the title bar.
    ui.alert('You closed the dialog.');
    return 'the end';
  }
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var tags = sheet.getRange(2, 4, 11, 1).getValues();
  var category = sheet.getRange(2, 3, 11, 1).getValues();
  for(var i = 0; i < tags.length; i++){
    if(tags[i][0] == response && category[i][0] == "Instrument"){
      var templateId = "my_template_id";
      chooseRowMethod(templateId, i);
      return ""; // You don't need to return empty string, just return null
    } else if(tags[i][0] == response && category[i][0] == "Motor" || tags[i][0] == response && category[i][0] == "Valve"){
      var templateId = "my_template_id_bis";
      chooseRowMethod(templateId, i);
      return ""; // You don't need to return empty string, just return null
    }
  }
}
function chooseRowMethod(templateId, rowNumber){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var data = sheet.getRange(2, 2, 11, 18).getValues();
  var today = new Date();
  var dd = today.getDate();
  var mm = today.getMonth() + 1;
  var yyyy = today.getFullYear();
  today = dd + '/' + mm + '/' + yyyy;

  var row = data[rowNumber];
  var docTitle = row[1];
  var docTitleTagNumber = row[2];
  var docId = DriveApp.getFileById(templateId).makeCopy().getId();
  var doc = DocumentApp.openById(docId);
  var body = doc.getActiveSection();
  body.replaceText("%SITEID%", row[0]);
  body.replaceText("%TAG%", row[1]);
  // ...
  body.replaceText("%SAT%", row[14]);

  var signature = row[17];
  var sign = signature.substring(signature.indexOf("/") + 1);

  var sigFolder = DriveApp.getFolderById("my_sigfolder_id");
  var files=sigFolder.getFilesByName(sign);
  var n = 0;
  while(files.hasNext()) {
    var file=files.next();
    n++;
  } if(n>1) {
    SpreadsheetApp.getUi().alert('There is more than one file with this name: ' + sign);
  }
  body.appendImage(file);
  doc.saveAndClose();

  var file = DriveApp.getFileById(doc.getId());
  var newFolder = DriveApp.getFolderById("my_newfolder_id");
  newFolder.addFile(file); 
  doc.setName(docTitle + " " + docTitleTagNumber + " " + today);
}